آموزش پایتون
2 subscribers
3 photos
35 links
Download Telegram
می‌توانیم از کاربر ورودی دریافت کنیم.

روش دریافت ورودی در پایتون 3.6 با 2.7 متفاوت است.

پایتون 3.6 از متد input() استفاده می‌کند.

پایتون 2.7 از متد raw_input() استفاده می‌کند.

مثال زیر ابتدا نام کاربری را درخواست می‌کند، سپس نام کاربری وارد شده را چاپ می‌کند:

پایتون 3.6
username = input("Enter username:")
print("Username is: " + username)

خروجی
Enter username:Alice
Username is: Alice

پایتون 2.7
username = raw_input("Enter username:")
print("Username is: " + username)

خروجی
Enter username:Bob
Username is: Bob

پایتون زمانی که به تابع input() می‌رسد متوقف می‌شود تا کاربر ورودی بدهد، سپس پس از دریافت ورودی اجرا را ادامه می‌دهد.
برای اطمینان از نمایش درست یک رشته، می‌توانیم خروجی را با استفاده از متد format() فرمت کنیم.


فرمت کردن رشته با format()

متد format() به ما اجازه می‌دهد بخش‌های مشخصی از یک رشته را فرمت کنیم.

گاهی اوقات بخش‌هایی از متن وجود دارد که کنترل آن در دست ما نیست، مثلا از پایگاه داده یا ورودی کاربر آمده باشند.

برای کنترل این مقادیر، می‌توان نگهدارنده های مکان (آکولاد {}) در متن اضافه کرد و مقادیر را از طریق متد format() عبور داد:

مثال

price = 49
txt = "The price is {} dollars"
print(txt.format(price))


خروجی:
The price is 49 dollars


می‌توان پارامترهایی درون آکولادها مشخص کرد تا نحوه تبدیل مقدار را تعیین کنیم:

مثال
price = 49
txt = "The price is {:.2f} dollars"
print(txt.format(price))

خروجی:
The price is 49.00 dollars
مقادیر چندگانه

اگر بخواهیم از مقادیر بیشتری استفاده کنیم، کافی است مقادیر بیشتری را به متد format() بدهیم:

print(txt.format(price, itemno, count))

و نگهدارنده مکان بیشتری اضافه کنیم:

مثال

quantity = 3
itemno = 567
price = 49
myorder = "I want {} pieces of item number {} for {:.2f} dollars."
print(myorder.format(quantity, itemno, price))


خروجی:
I want 3 pieces of item number 567 for 49.00 dollars.


پس با اضافه کردن مقادیر بیشتر به متد format() و آکولاد بیشتر، می‌توان مقادیر متعددی را در رشته جایگذاری کرد.
می‌توان از شماره‌های اندیس (عدد داخل آکولاد {0}) برای اطمینان از قرار گرفتن مقادیر در جای درست استفاده کرد

مثال
quantity = 3
itemno = 567
price = 49
myorder = "I want {0} pieces of item number {1} for {2:.2f} dollars."
print(myorder.format(quantity, itemno, price))


خروجی:
I want 3 pieces of item number 567 for 49.00 dollars.


همچنین اگر بخواهیم به یک مقدار بیش از یکبار ارجاع دهیم، از شماره اندیس استفاده می‌کنیم:

مثال
age = 36
name = "John"
txt = "His name is {1}. {1} is {0} years old."
print(txt.format(age, name))


خروجی:
His name is John. John is 36 years old.

پس با شماره‌های اندیس می‌توانیم مطمئن شویم که مقادیر در جای درست قرار می‌گیرند.
شاخص های نامگذاری شده

می‌توان از نام‌های اندیس استفاده کرد، با وارد کردن یک نام داخل آکولادها {carname}، اما در این صورت باید هنگام پاس دادن مقادیر پارامتر از نام‌ها استفاده کرد:
txt.format(carname="Ford")

مثال
myorder = "I have a {carname}, it is a {model}."
print(myorder.format(carname = "Ford", model = "Mustang"))

خروجی
I have a Ford, it is a Mustang.

پس می‌توان با استفاده از نام‌های اندیس ها ، به جای شماره‌های اندیس ها، مقادیر را اختصاص داد.
2⃣ مدیریت فایل
🔰 باز کردن فایل یکی از مهمترین بخش های برنامه نویسی پایتون است.

برای باز کردن فایل در پایتون از تابع open() استفاده میکنیم.

این تابع دو پارامتر دارد:

🟡 نام فایل - نام فایلی که میخواهیم باز کنیم

🟡 حالت - مشخص میکند فایل را به چه صورتی باز کنیم. چهار حالت وجود دارد:


⚫️ "r"
- فقط خواندن. پیش فرض است. اگر فایل وجود نداشته باشد خطا میدهد.

⚫️ "a"
- اضافه کردن. به انتهای فایل اضافه میکند. اگر فایل وجود نداشت یکی جدید میسازد.

⚫️ "w"
- نوشتن. فایل را برای نوشتن باز میکند. اگر فایل وجود داشته باشد جایگزین میشود.

⚫️ "x"
- ایجاد فایل جدید. اگر فایل وجود داشته باشد خطا میدهد.


همچنین میتوان مشخص کرد فایل به صورت متن یا باینری باز شود:

⚪️ "t"
- متن. پیش فرض است.

⚪️ "b"
- باینری. مثلا برای عکس ها.

خلاصه اینکه تابع open() امکانات زیادی برای باز کردن، خواندن، نوشتن و اضافه کردن به فایل ها در پایتون فراهم میکند.

🧩🧩🧩🧩🧩🧩🧩🧩🧩🧩🧩🧩🧩

⭕️ نحوه استفاده

برای باز کردن یک فایل برای خواندن، فقط کافی است نام فایل را مشخص کنیم:

f = open("demofile.txt")

کد بالا معادل است با:

f = open("demofile.txt", "rt")

چون "r" به معنای خواندن و "t" به معنای متن هستند که مقادیر پیش‌فرض هستند، نیازی به مشخص کردن آن‌ها نیست.

🔴 مطمئن شوید فایل وجود دارد، در غیر این صورت خطایی رخ می‌دهد.
🟣 در پایتون برای باز کردن یک فایل از تابع داخلی open() استفاده می‌کنیم.

این تابع یک شیء فایل برمی‌گرداند که دارای روش read() برای خواندن محتوای فایل است:

مثال:
f = open("demofile.txt", "r")
print(f.read())

نتیجه:
Hello! Welcome to demofile.txt
This file is for testing purposes.
Good Luck!

🟪 اگر فایل در مسیر دیگری قرار دارد، باید مسیر کامل فایل را مشخص کنیم:

مثال:
f = open("D:\\myfiles\\welcome.txt", "r")
print(f.read())

نتیجه:

Welcome to this text file!
This file is located in a folder named "myfiles", on the D drive.
Good Luck!

بنابراین با استفاده از تابع open() و مشخص کردن مسیر فایل، می‌توانیم فایل‌ها را در پایتون باز کنیم و محتوای آن‌ها را بخوانیم.
بطور پیش‌فرض، متد read() تمام متن را برمیگرداند. اما شما همچنین می‌توانید تعیین کنید چند کاراکتر را می‌خواهید برگردانید.

مثال:

f = open("demofile.txt", "r")
print(f.read(5))


این کد، 5 کاراکتر اول فایل را برمیگرداند.

نتیجه :
Hello
روش های مختلف خواندن خط به خط یک فایل

💢 مثال اول:

f = open("demofile.txt", "r")
باز کردن فایل با نام demofile.txt برای خواندن

print(f.readline())
خواندن اولین خط فایل و چاپ آن

➡️
Hello! Welcome to demofile.txt

🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳

💢 مثال دوم:

f = open("demofile.txt", "r")
باز کردن فایل

print(f.readline())
خواندن اولین خط و چاپ

print(f.readline())
خواندن خط بعدی و چاپ آن

➡️
Hello! Welcome to demofile.txt
This file is for testing purposes.


🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳

💢 مثال سوم:

f = open("demofile.txt", "r")
باز کردن فایل

for x in f:
print(x)

حلقه بر روی خطوط فایل برای خواندن و چاپ تک تک آنها

➡️
Hello! Welcome to demofile.txt
This file is for testing purposes.
Good Luck!



به طور خلاصه، readline() برای خواندن خط به خط، for loop برای خواندن کل فایل، و open() برای باز کردن فایل استفاده میشود
بستن فایل پس از اتمام کار

💢 مثال:

f = open("demofile.txt", "r")
باز کردن فایل برای خواندن

print(f.readline())
خواندن اولین خط

f.close()
بستن فایل پس از اتمام کار

➡️
Hello! Welcome to demofile.txt




همیشه پس از اتمام کار با یک فایل در پایتون، باید آن را ببندیم. این کار با تابع close() انجام می‌شود.

دلیل این کار این است که در برخی موارد به دلیل بافرینگ (buffering) تغییرات اعمال شده در فایل تا زمان بسته شدن آن نمایش داده نمی‌شود.

پس بستن فایل پس از پایان کار یک روش است تا از ذخیره تغییرات اطمینان حاصل شود.
نوشتن و اضافه کردن محتوا به یک فایل موجود


برای نوشتن به یک فایل موجود باید پارامتری به تابع open() اضافه کنیم:

"a"
- اضافه کردن به انتهای فایل

"w"
- نوشتن و جایگزینی محتوای فایل


💢 مثال:

f = open("demofile2.txt", "a")
باز کردن فایل برای اضافه کردن

f.write("Now the file has more content!")
اضافه کردن متن جدید

f.close()
بستن فایل

print(open("demofile2.txt").read())
خواندن محتوای جدید فایل

➡️
Hello! Welcome to demofile2.txt
This file is for testing purposes.
Good Luck!Now the file has more content!


🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳

💢 مثال دوم:

f = open("demofile3.txt", "w")
باز کردن فایل برای نوشتن و جایگزینی

f.write("Woops! I have deleted the content!")
جایگزینی محتوای قدیمی

f.close()

print(open("demofile3.txt").read())
خواندن محتوای جدید فایل

➡️
Woops! I have deleted the content!



توجه داشته باشید که متد "w" کل محتوای فایل را جایگزین می‌کند.
برای ایجاد یک فایل جدید در پایتون، از متد open() استفاده می‌کنیم و یکی از پارامترهای زیر را به آن می‌دهیم:

"x"
- ایجاد - این پارامتر یک فایل را ایجاد می‌کند و در صورت وجود فایل، خطا را برمی‌گرداند.

"a"
- الحاق - این پارامتر یک فایل را ایجاد می‌کند اگر فایل مشخص شده وجود نداشته باشد.

"w"
- نوشتن - این پارامتر یک فایل را ایجاد می‌کند اگر فایل مشخص شده وجود نداشته باشد.

💢 مثال:
برای ایجاد یک فایل به نام "myfile.txt"، از کد زیر استفاده می‌کنیم:

f = open("myfile.txt", "x")
نتیجه: یک فایل جدید خالی ایجاد می‌شود!

💢 مثال:
ایجاد یک فایل جدید اگر وجود نداشته باشد:

f = open("myfile.txt", "w")
🔵 برای حذف فایل یا پوشه باید از ماژول os استفاده کنیم.

برای حذف یک فایل، ابتدا ماژول os را import می‌کنیم، سپس تابع os.remove() را صدا می‌زنیم و آدرس فایل مورد نظر را به عنوان پارامتر می‌دهیم.

مثال:

import os
os.remove("address/to/file.txt")


البته بهتر است قبل از حذف فایل، ابتدا چک کنیم که آیا فایل مورد نظر وجود دارد یا خیر تا از بروز خطا جلوگیری شود:

import os
if os.path.exists("address/to/file.txt"):
os.remove("address/to/file.txt")
else:
print("File does not exist")



🔵 برای حذف یک پوشه نیز از تابع os.rmdir() استفاده می‌کنیم.

توجه داشته باشید که os.rmdir() فقط پوشه‌های خالی را حذف می‌کند:

import os
os.rmdir("address/to/folder")


بنابراین قبل از حذف پوشه باید مطمئن شویم که پوشه خالی است