یکی از رایج ترین کارهایی که در پایتون میتونید انجام بدید، خوندن و نوشتن فایل هاست. میتونید با یک فایل متنی ساده، یا یک گزارش پیچیده سرور، یا حتی تجزیه و تحلیل داده های خام کار کنید. همچنین یک مهارت اساسی است. که هر کس باید با آن آشنا باشد. چه بخواهید یک اسکریپت شخصی ساده ایجاد کنید و چه بخواهید وارد حوزه علوم داده شوید، به عملیات خواندن و نوشتن فایل نیاز است که خوشبختانه یادگیری آسانی دارد . البته همه این ها نیاز به یادگیری خوندن یا نوشتن یک فایل در پایتون دارند. در این مقاله به این آموزش می پردازیم :
مسیرهای فایل
مسیر فایل، رشته ای است که مکان یک فایل را نشان می دهد. که به سه بخش عمده تقسیم می شود:
مسیر پوشه : محل پوشه فایل در سیستم
نام فایل : نام واقعی فایل
پسوند : انتهای مسیر فایل از یک نقطه (.) برای نشان دادن پسوند فایل استفاده می کنیم
وقتی می خواهید با یک فایل کار کنید، اولین کاری که باید انجام دهید باید آن فایل را باز کنید. این کار با فراخوانی تابع داخلی open() انجام می شود.
file = open(‘file.txt’)
همیشه باید به خاطر داشته باشید که فایلی که باز کردید را ببندید . می توانید از روش زیر استفاده کنید :
reader = open(‘file.txt’)
try:
# کار انجام دادن روی فایل
finally:
reader.close()
راه دوم برای باز و بسته کرده فایل استفاده از عبارت with است:
with open(‘file.txt’) as reader:
# کار انجام دادن روی فایل
دستور with به طور خودکار از بسته شدن فایل باطمینان حاصل می کند. توصیه می کنیم تا حد امکان از دستور with استفاده کنید. چون که باز کردن فایل با این روش کد را تمیز تر می کند. مدیریت هر گونه خطای غیرمنتظره را نیز برای شما آسانتر میکند.
در هنگام باز کردن فایل ها شما همچنین می توانید از آرگومان های موقعیتی استفاده کنید. این آرگومان ها چندین کاراکتر هستند. که نحوه باز کردن فایل را نشان دهد. پیشفرض و رایجترین حالت «r» است. که باز کردن فایل را در حالت فقط خواندنی بهعنوان یک فایل متنی نشان میدهد:
with open(‘file.txt’, ‘r’) as reader:
# کار انجام دادن روی فایل
گزینه های دیگری از این آرگومان ها برای باز کردن فایل در پایتون وجود دارند . رایج ترین آنها موارد زیر هستند:
‘r’
باز کردن برای خواندن فایل
‘w’
باز کردن برای نوشتن در فایل
‘a’
باز کردن برای نوشتن در فایل ، در صورت وجود به انتهای فایل اضافه می شود
‘b’
binary mode
‘+’
باز کردن برای آپدیت فایل(خواندن یا نوشتن)
خواندن و نوشتن فایل های باز شده
خواندن فایل ها در پایتون
وقتی که یک فایل رو باز کردید، میتونید محتوای اون فایل رو بخونید. یا داخل اون فایل بنویسید. روشهای متعددی وجود دارن که برخی از اونها عبارتند از :
read() : بر اساس تعداد بایت های مورد نیاز از فایل خوانده می شود. اگر هیچ آرگومانی به آن داده نشود ، کل فایل خوانده می شود.
readline() : با این روش یک خط از فایل خوانده می شود.
readlines() : کل خطوط فایل را می خواند و آنها را به عنوان یک لیست برمی گرداند.
برای مثال :
خواندن کل فایل
with open(‘file’, ‘r’) as reader:
f=reader.read()
print(f)
خواندن یک خط از فایل
with open(‘file’, ‘r’) as reader:
f=reader.readline()
print(f)
کل خطوط فایل را می خواند و آنها را به عنوان یک لیست برمی گرداند
with open(‘file’, ‘r’) as reader:
f=reader.readlines()
print(f)
نوشتن فایلها در پایتون
حالا بیاید به نوشتن فایل ها بپردازیم . مانند خواندن فایل ها ، چندین روش برای نوشتن فایل در پایتون وجود دارند :
write() : این متد، رشته را در فایل می نویسد.
writelines() : نوشته ها را خط به خط می نویسد .
در اینجا یک مثال کوتاه از استفاده آن آورده ایم :
with open(‘file.txt’, ‘r’) as reader:
f = reader.readlines()
with open(‘file_reversed.txt’, ‘w’) as writer:
for i in reversed(f):
writer.write(i)
اضافه کردن به یک فایل در پایتون
گاهی اوقات، ممکن است بخواهید به یک فایل چیزی اضافه کنید. یا در انتهای یک فایل که از قبل در آن نوشته اید ، چیزی اضافه کنید. این کار به راحتی با استفاده از کاراکتر ‘a’ برای آرگومان ، امکان پذیر است:
with open(‘file.txt’, ‘a’) as a_writer:
a_writer.write(‘new word’)
کار همزمان با دو فایل
مواقعی وجود دارد که ممکن است بخواهید همزمان یک فایل را بخوانید. و در فایل دیگری بنویسید :
d_path = ‘dog_breeds.txt’
d_r_path = ‘dog_breeds_reversed.txt’
with open(d_path, ‘r’) as reader, open(d_r_path, ‘w’) as writer:
dog_breeds = reader.readlines()
writer.writelines(reversed(dog_breeds))
ماژول های دیگر برای خواندن فایل ها در پایتون
موقعیت های رایجی وجود دارد که ممکن است هنگام کار با فایل ها در پایتون با آنها مواجه شوید. اکثر این موارد را می توان با استفاده از ماژول های دیگر مدیریت کرد. علاوه بر این، کتابخانه های داخلی زیادی وجود دارد. که می توانید از آنها استفاده کنید.
wave: read and write WAV files (audio)
aifc: read and write AIFF and AIFC files (audio)
sunau: read and write Sun AU files
tarfile: read and write tar archive files
zipfile: work with ZIP archives
configparser: easily create and parse configuration files
xml.etree.ElementTree: create or read XML based files
msilib: read and write Microsoft Installer files
plistlib: generate and parse Mac OS X .plist files