در این مطلب، ویدئو تمرین برنامه ها در مورد مدیریت فایل های باینری در پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:18:05
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,640 –> 00:00:03,199
سلام در این ویدیو
2
00:00:03,199 –> 00:00:05,600
ما قصد داریم نحوه کار با
3
00:00:05,600 –> 00:00:06,640
فایل های باینری
4
00:00:06,640 –> 00:00:10,080
در پایتون را با استفاده از ماژول pickle یاد
5
00:00:10,080 –> 00:00:12,240
بگیریم، بیایید با این شروع کنیم که منظور شما از
6
00:00:12,240 –> 00:00:13,840
فایل
7
00:00:13,840 –> 00:00:16,480
های باینری چیست فایل های باینری فایل هایی هستند که حاوی
8
00:00:16,480 –> 00:00:17,279
داده های خام
9
00:00:17,279 –> 00:00:20,400
هستند، بنابراین در فرمت های قابل خواندن توسط انسان
10
00:00:20,400 –> 00:00:24,080
برای مثال فایل های تصویری نیستند. مانند فایل های jpeg gif
11
00:00:24,080 –> 00:00:27,119
یا word اکسل پاورپوینت
12
00:00:27,119 –> 00:00:29,920
و غیره آنها برنامه های خاص خود را دارند
13
00:00:29,920 –> 00:00:30,720
14
00:00:30,720 –> 00:00:34,079
که اکنون می توانند آنها را بخوانند چرا باید
15
00:00:34,079 –> 00:00:34,640
از
16
00:00:34,640 –> 00:00:37,440
ماژول pickle استفاده کنیم زیرا ماژول pickle به
17
00:00:37,440 –> 00:00:38,320
18
00:00:38,320 –> 00:00:40,320
ما امکان
19
00:00:40,320 –> 00:00:43,440
سریال سازی و غیر سریالی کردن اشیاء را می
20
00:00:43,440 –> 00:00:46,160
دهد ، بنابراین معنی آن این است که اگر شما
21
00:00:46,160 –> 00:00:46,879
دادههایی
22
00:00:46,879 –> 00:00:49,920
با هر فرمتی دارید، مانند کلاسهای فهرست دیکشنری،
23
00:00:49,920 –> 00:00:53,120
میتوانید از ماژول pickle
24
00:00:53,120 –> 00:00:55,840
برای تبدیل آنها به فایلها برای ذخیره آنها
25
00:00:55,840 –> 00:00:57,039
در دیسک سخت استفاده کنید
26
00:00:57,039 –> 00:01:00,079
و سپس میتواند آنها را دقیقاً در همان قالب برای شما بخواند،
27
00:01:00,079 –> 00:01:02,399
28
00:01:02,399 –> 00:01:04,879
بنابراین سریالسازی چیزی نیست جز
29
00:01:04,879 –> 00:01:07,680
تبدیل هر نوع شی ای که
30
00:01:07,680 –> 00:01:08,799
در حافظه دارید
31
00:01:08,799 –> 00:01:11,439
به جریان بایتی که می تواند در فایل ها ذخیره شود،
32
00:01:11,439 –> 00:01:12,720
به
33
00:01:12,720 –> 00:01:16,759
آن ترشی نیز می گویند.
34
00:01:16,759 –> 00:01:19,200
35
00:01:19,200 –> 00:01:20,000
36
00:01:20,000 –> 00:01:23,119
به شی پایتون در
37
00:01:23,119 –> 00:01:23,920
حافظه
38
00:01:23,920 –> 00:01:27,040
که به آن unpickling نیز می گویند
39
00:01:27,040 –> 00:01:30,479
، چگونه از ماژول pickle استفاده کنیم،
40
00:01:30,479 –> 00:01:31,600
برنامه خود را
41
00:01:31,600 –> 00:01:34,799
با وارد کردن ماژول pickle شروع می
42
00:01:34,799 –> 00:01:37,920
کنیم و فایل را در حالت باینری باز می کنیم تا
43
00:01:37,920 –> 00:01:38,479
44
00:01:38,479 –> 00:01:41,520
بخوانیم یا بنویسیم تا داده های شی را
45
00:01:41,520 –> 00:01:42,479
در فایلی
46
00:01:42,479 –> 00:01:45,840
که از pickle استفاده می کنیم ذخیره کنیم. تابع dump سه آرگومان می گیرد
47
00:01:45,840 –> 00:01:47,280
48
00:01:47,280 –> 00:01:49,840
آرگومان اول شی ای است که می خواهیم
49
00:01:49,840 –> 00:01:50,799
ذخیره
50
00:01:50,799 –> 00:01:53,520
کنیم همانطور که یاد گرفتیم می تواند دیکشنری دوتایی لیست رشته ای
51
00:01:53,520 –> 00:01:54,000
52
00:01:54,000 –> 00:01:57,840
یا
53
00:01:57,840 –> 00:02:00,560
54
00:02:00,560 –> 00:02:03,119
هر شیء دلخواه شما باشد.
55
00:02:03,119 –> 00:02:05,200
حالت
56
00:02:05,200 –> 00:02:07,360
آرگومان سومی وجود دارد که
57
00:02:07,360 –> 00:02:08,399
پروتکلی را تعریف میکند
58
00:02:08,399 –> 00:02:11,599
که ما اکنون آن را پوشش نمیدهیم تا
59
00:02:11,599 –> 00:02:12,560
دادههای شما را دوباره
60
00:02:12,560 –> 00:02:16,319
بخوانیم. ما از pickle.load استفاده میکنیم که در یک پارامتر طول میکشد
61
00:02:16,319 –> 00:02:17,200
62
00:02:17,200 –> 00:02:19,840
که همان دسته فایل است که با
63
00:02:19,840 –> 00:02:20,879
باز کردن فایل
64
00:02:20,879 –> 00:02:24,000
در حالت باینری خواندن به آن باز میگردد.
65
00:02:24,000 –> 00:02:25,120
شما شیئی را
66
00:02:25,120 –> 00:02:28,000
که در فایل ذخیره کرده بودیم اکنون
67
00:02:28,000 –> 00:02:29,440
برنامه ای که از شما
68
00:02:29,440 –> 00:02:32,000
خواسته می شود می تواند بنویسد یا ضمیمه نوع
69
00:02:32,000 –> 00:02:32,959
برنامه
70
00:02:32,959 –> 00:02:35,840
خوانده شده یا جستجوی نوع برنامه یا خواندن
71
00:02:35,840 –> 00:02:37,840
به همراه نوع صحیح برنامه
72
00:02:37,840 –> 00:02:40,879
یا به روز رسانی باشد. یک نوع برنامه را می خوریم ابتدا
73
00:02:40,879 –> 00:02:41,840
با
74
00:02:41,840 –> 00:02:45,200
برنامه نوشتن ساده شروع می کنیم به عنوان مثال
75
00:02:45,200 –> 00:02:47,840
برنامه ای بنویسیم تا در زیر دو قانون
76
00:02:47,840 –> 00:02:50,800
به یک فایل باینری دانش آموز نقطه
77
00:02:50,800 –> 00:02:53,120
نقطه بنویسیم.
78
00:02:53,120 –> 00:02:54,239
79
00:02:54,239 –> 00:02:57,360
80
00:02:57,360 –> 00:02:58,800
81
00:02:58,800 –> 00:03:01,599
فایل را در حالت نوشتن باینری باز
82
00:03:01,599 –> 00:03:02,640
83
00:03:02,640 –> 00:03:06,000
می کنیم و سپس pickle.dump را با داده و دسته فایل صدا می زنیم
84
00:03:06,000 –> 00:03:07,200
85
00:03:07,200 –> 00:03:10,159
تا ردیف اول را بنویسیم و سپس
86
00:03:10,159 –> 00:03:10,640
دوباره آن را
87
00:03:10,640 –> 00:03:13,599
برای ردیف دوم فراخوانی می کنیم. فراموش نکنید
88
00:03:13,599 –> 00:03:14,159
89
00:03:14,159 –> 00:03:17,760
که فایل خود را در
90
00:03:17,760 –> 00:03:18,560
91
00:03:18,560 –> 00:03:22,080
پایان ببندیم. در یک فایل بنویسید اگر بخواهید
92
00:03:22,080 –> 00:03:23,440
فایل باینری را باز کنید،
93
00:03:23,440 –> 00:03:25,519
خواهید دید که چیزی شبیه به
94
00:03:25,519 –> 00:03:26,560
این است و
95
00:03:26,560 –> 00:03:29,599
توسط انسان قابل خواندن نیست، اکنون می توانید از شما خواسته شود
96
00:03:29,599 –> 00:03:31,840
که همان برنامه را بنویسید که
97
00:03:31,840 –> 00:03:35,200
در آن باید داده ها را به یک فایل باینری اضافه یا اضافه کنید.
98
00:03:35,200 –> 00:03:38,239
99
00:03:38,239 –> 00:03:40,400
شما فقط باید حالت را به
100
00:03:40,400 –> 00:03:41,760
اضافه کردن باینری تغییر دهید
101
00:03:41,760 –> 00:03:44,720
و از برنامه استفاده مجدد کنید، اکنون این کار بسیار
102
00:03:44,720 –> 00:03:45,599
آسان است،
103
00:03:45,599 –> 00:03:47,920
اغلب اوقات از شما خواسته می
104
00:03:47,920 –> 00:03:50,159
شود که ورودی را از کاربر دریافت کنید
105
00:03:50,159 –> 00:03:53,120
و سپس در یک فایل باینری
106
00:03:53,120 –> 00:03:54,239
107
00:03:54,239 –> 00:03:57,439
بنویسید، مثلاً برنامه ای برای نوشتن نام بنویسید. و
108
00:03:57,439 –> 00:03:58,319
اعداد
109
00:03:58,319 –> 00:04:01,519
را در یک فایل باینری قرار دهید.
110
00:04:01,519 –> 00:04:04,000
که داده ها باید در فرمت تاپلی
111
00:04:04,000 –> 00:04:04,720
با نام
112
00:04:04,720 –> 00:04:07,519
و شماره رول باشند در اینجا
113
00:04:07,519 –> 00:04:08,400
برنامه خود را
114
00:04:08,400 –> 00:04:11,519
با وارد کردن ماژول pickle شروع می کنیم سپس
115
00:04:11,519 –> 00:04:11,840
116
00:04:11,840 –> 00:04:15,360
فایل را در حالت باینری سمت راست باز می کنیم
117
00:04:15,360 –> 00:04:17,839
. من از عرض اینجا استفاده می کنم. که
118
00:04:17,839 –> 00:04:20,639
راه جایگزینی برای باز کردن فایل است
119
00:04:20,639 –> 00:04:23,120
، بخش خوب آن این است که نیازی نیست
120
00:04:23,120 –> 00:04:25,600
به خاطر بسپاریم که فایل
121
00:04:25,600 –> 00:04:27,759
را ببندیم زیرا منابع فایل را به
122
00:04:27,759 –> 00:04:29,360
طور خودکار مدیریت
123
00:04:29,360 –> 00:04:32,000
می کند، سپس حلقه استانداردی را تنظیم می کنیم که تا زمانی
124
00:04:32,000 –> 00:04:34,400
که کاربر با وارد کردن داده ها انجام شود اجرا می شود.
125
00:04:34,400 –> 00:04:37,280
ابتدا
126
00:04:37,280 –> 00:04:39,120
از کاربر
127
00:04:39,120 –> 00:04:42,800
یک گزینه برای اضافه کردن داده و 0 برای خروج در
128
00:04:42,800 –> 00:04:45,840
صورت وارد کردن 1 را می گیرد، نام
129
00:04:45,840 –> 00:04:48,720
و شماره رول را از کاربر می گیریم و
130
00:04:48,720 –> 00:04:50,080
131
00:04:50,080 –> 00:04:53,680
pickle.dump را با فرمت چند تایی همانطور که در سوال داده شده است در
132
00:04:53,680 –> 00:04:57,120
صورتی که کاربر وارد شود تماس می گیریم. گزینه 0 سپس
133
00:04:57,120 –> 00:04:57,840
134
00:04:57,840 –> 00:05:00,720
از حلقه while خارج می شویم و این
135
00:05:00,720 –> 00:05:04,000
برنامه ای برای نوشتن یک فایل باینری است
136
00:05:04,000 –> 00:05:06,800
اکنون این الگوی شما برای هر
137
00:05:06,800 –> 00:05:08,639
نوع برنامه نوشتنی است
138
00:05:08,639 –> 00:05:11,199
که نیاز دارید فقط حالت نام فایل
139
00:05:11,199 –> 00:05:11,919
140
00:05:11,919 –> 00:05:15,039
و داده ها را تغییر دهید تا از کاربر و
141
00:05:15,039 –> 00:05:18,400
شی وارد شود. یو شما باید به pickle.com منتقل کنید،
142
00:05:18,400 –> 00:05:21,199
برای مثال برنامه داده شده می
143
00:05:21,199 –> 00:05:24,639
تواند نوشتن در فایل مشتری باشد. این داده ها
144
00:05:24,639 –> 00:05:25,919
با فرمت مشخص شده
145
00:05:25,919 –> 00:05:29,039
که در آن داده ها از کاربر گرفته می شود،
146
00:05:29,039 –> 00:05:32,080
بنابراین من فقط حالت نام فایل را
147
00:05:32,080 –> 00:05:33,840
به باینری راست تغییر
148
00:05:33,840 –> 00:05:36,720
می دهم. داده های کاربر و
149
00:05:36,720 –> 00:05:38,720
تغییر شی به لیست
150
00:05:38,720 –> 00:05:41,680
با داده های جدید این برنامه جدید را به ما می دهد
151
00:05:41,680 –> 00:05:43,199
152
00:05:43,199 –> 00:05:46,080
یا برنامه می تواند به
153
00:05:46,080 –> 00:05:48,400
فایل باینری customer.data
154
00:05:48,400 –> 00:05:51,199
در فرمت داده شده اضافه شود که در اینجا داده ها
155
00:05:51,199 –> 00:05:52,720
از کاربر
156
00:05:52,720 –> 00:05:55,039
گرفته می شود. حالت را به ضمیمه تغییر
157
00:05:55,039 –> 00:05:55,919
158
00:05:55,919 –> 00:05:59,520
دهید و برنامه شما آماده است اکنون برنامه هایی را انجام می دهیم
159
00:05:59,520 –> 00:06:00,479
160
00:06:00,479 –> 00:06:03,440
که از ما می خواهند از یک فایل خاص بخوانیم یا جستجو کنیم،
161
00:06:03,440 –> 00:06:04,800
162
00:06:04,800 –> 00:06:07,440
مانند نوشتن یک برنامه برای خواندن همه
163
00:06:07,440 –> 00:06:09,759
محتویات از یک فایل باینری.
164
00:06:09,759 –> 00:06:12,960
165
00:06:12,960 –> 00:06:14,160
166
00:06:14,160 –> 00:06:17,600
ماژول pickle در مرحله بعد فایل را باز می کنیم
167
00:06:17,600 –> 00:06:18,880
168
00:06:18,880 –> 00:06:22,240
و حالت باینری را می خوانیم اکنون می دانیم که باید
169
00:06:22,240 –> 00:06:24,240
pickle.load را
170
00:06:24,240 –> 00:06:27,120
با دسته فایل فراخوانی
171
00:06:27,120 –> 00:06:28,400
کنیم و شیئی را
172
00:06:28,400 –> 00:06:31,280
که می توانیم چاپ کنیم باید
173
00:06:31,280 –> 00:06:32,720
174
00:06:32,720 –> 00:06:36,240
هر بار برای هر شیء اکنون فراخوانی کنیم تابع load را به ما برمی گرداند. ما انجام می دهیم نمی
175
00:06:36,240 –> 00:06:37,600
دانم چند شی
176
00:06:37,600 –> 00:06:40,400
در فایل وجود دارد، بنابراین کاری که ما انجام خواهیم داد این
177
00:06:40,400 –> 00:06:41,039
است
178
00:06:41,039 –> 00:06:44,160
که این را در حلقه بی نهایت قرار دهیم، اما مشکلی در این حلقه بی نهایت وجود دارد،
179
00:06:44,160 –> 00:06:46,400
180
00:06:46,400 –> 00:06:49,520
وقتی این را اجرا می کنم، همه خطوط را چاپ می کند،
181
00:06:49,520 –> 00:06:52,400
اما وقتی همه اشیا به پایان رسید،
182
00:06:52,400 –> 00:06:53,360
هنوز در تلاش برای
183
00:06:53,360 –> 00:06:56,479
بارگذاری هستم. بنابراین خطای پایان فایل را به من می دهد
184
00:06:56,479 –> 00:06:59,520
و خراب می شود، ما نمی توانیم
185
00:06:59,520 –> 00:07:02,880
برنامه ای را ارسال کنیم که خراب می شود، می توانیم
186
00:07:02,880 –> 00:07:03,599
187
00:07:03,599 –> 00:07:07,039
با گرفتن این استثنا از خراب شدن جلوگیری کنیم، این کار را
188
00:07:07,039 –> 00:07:09,199
با محصور کردن بلوکی که در آن
189
00:07:09,199 –> 00:07:11,039
منتظر استثنا هستیم
190
00:07:11,039 –> 00:07:14,639
در try انجام می دهیم به جز بلوک این
191
00:07:14,639 –> 00:07:15,840
بلوک مدیریت استثنا است
192
00:07:15,840 –> 00:07:18,479
و شما می توانید مشخص کنید که کدام خطا را باید
193
00:07:18,479 –> 00:07:19,680
دریافت کند،
194
00:07:19,680 –> 00:07:22,479
مانند مورد ما، می دانیم که خطا
195
00:07:22,479 –> 00:07:24,160
خطای پایان فایل است
196
00:07:24,160 –> 00:07:26,400
و در صورت بروز این خطا، برنامه چه کاری باید انجام
197
00:07:26,400 –> 00:07:28,240
دهد،
198
00:07:28,240 –> 00:07:30,319
ما فقط می خواهیم به طور کامل بدون خراب شدن از برنامه خارج
199
00:07:30,319 –> 00:07:32,400
200
00:07:32,400 –> 00:07:35,360
شویم، بنابراین ما فقط این کار را انجام خواهیم داد. استراحت را برای
201
00:07:35,360 –> 00:07:36,639
خروج از حلقه while قرار دهید
202
00:07:36,639 –> 00:07:39,599
و برنامه را متوقف کنید اکنون این برنامه استاندارد شما
203
00:07:39,599 –> 00:07:42,240
برای خواندن از یک
204
00:07:42,240 –> 00:07:43,199
فایل باینری است،
205
00:07:43,199 –> 00:07:45,520
شما از آن به عنوان الگوی اصلی خواندن خود استفاده خواهید کرد
206
00:07:45,520 –> 00:07:46,479
207
00:07:46,479 –> 00:07:49,039
و فقط آن را مطابق با سوال تغییر دهید.
208
00:07:49,039 –> 00:07:50,319
209
00:07:50,319 –> 00:07:53,440
ked همچنین به خروجیای که داده است توجه کنید،
210
00:07:53,440 –> 00:07:54,319
خواهید دید که
211
00:07:54,319 –> 00:07:57,360
برخلاف فایل متنی، فایل باینری
212
00:07:57,360 –> 00:07:58,560
نوع داده را
213
00:07:58,560 –> 00:08:01,520
دقیقاً همانطور که ارسال کردهاید حفظ میکند، بنابراین فهرست
214
00:08:01,520 –> 00:08:02,400
بهعنوان
215
00:08:02,400 –> 00:08:05,599
فهرستی که در داخل آن رشته قرار دارد، بهعنوان
216
00:08:05,599 –> 00:08:06,960
نوع داده رشتهای برگردانده میشود
217
00:08:06,960 –> 00:08:10,479
و int به صورت جوهری که نیازی به آن ندارید، برگردانده میشود. برای انجام
218
00:08:10,479 –> 00:08:13,520
هر گونه تبدیل برای پردازش بیشتر
219
00:08:13,520 –> 00:08:16,240
چیزی که معمولاً ممکن است از شما خواسته شود این است که
220
00:08:16,240 –> 00:08:17,759
خواندن انتخابی را انجام دهید
221
00:08:17,759 –> 00:08:20,400
یعنی فقط سطرها یا ستونهای خاص نمایش داده شود،
222
00:08:20,400 –> 00:08:21,759
223
00:08:21,759 –> 00:08:24,080
اجازه دهید ابتدا ببینیم که چگونه فقط ستونهای خاصی را نمایش میدهید،
224
00:08:24,080 –> 00:08:25,680
225
00:08:25,680 –> 00:08:28,080
مثلاً اگر برنامه از یک
226
00:08:28,080 –> 00:08:28,879
فایل بخواند
227
00:08:28,879 –> 00:08:32,000
و فقط نام دانشآموز را نمایش دهد. الگوی استاندارد ما
228
00:08:32,000 –> 00:08:32,399
را می گیرد،
229
00:08:32,399 –> 00:08:35,360
اکنون می
230
00:08:35,360 –> 00:08:36,000
دانید که
231
00:08:36,000 –> 00:08:38,839
این برنامه تمام سطر را به عنوان دنباله به شما می دهد،
232
00:08:38,839 –> 00:08:40,000
233
00:08:40,000 –> 00:08:42,320
اگر می خواهید فقط ستون های خاصی را چاپ
234
00:08:42,320 –> 00:08:43,200
235
00:08:43,200 –> 00:08:46,240
کنید، فقط باید از فهرست بندی برنامه استفاده کنید
236
00:08:46,240 –> 00:08:47,440
237
00:08:47,440 –> 00:08:50,560
تا همه سطرها را بخواند، اما اکنون به
238
00:08:50,560 –> 00:08:52,480
جای چاپ سطر کامل
239
00:08:52,480 –> 00:08:55,600
، اکنون فقط سطر یک را چاپ کنید اگر
240
00:08:55,600 –> 00:08:57,040
این را اجرا کنید و ببینید
24