در این قسمت از دوره آموزش پایتون رایگان در سایت چیاب، قصد مطرح کردن یک پروژه و بررسی آن را داریم. در طی ۱۱ آموزش قبلی پایتون در سایت چیاب میتوان گفت که مباحث مقدماتی پایتون را آموختهاید.
در این مطلب پروژهای با عنوان دفترچهی خاطرات مطرح میکنیم و پس از بررسی آن در انتها کدکامل این پروژه قرار خواهدگرفت.
صورت مسئله:
در این پروژه از شما خواسته شدهاست که هرگاه کاربر قصد واردکردن خاطرات خود را داشت باید یک فایل متنی با عنوان تاریخ و ساعت همان لحظه ایجاد شود، این فایل متنی در پوشهی مربوط به همان ماه قرار دارد و پوشهی مربوط به ماه در پوشهای بزرگتر به نام سال جاری قرارمیگیرد.
همچنین باید این امکان در اختیار کاربر قرارداده شود که بتواند فایلهای متنی مربوط به خاطرات گذشته را مشاهده کند.
حل پروژه:
در ابتدای کد اصلی برنامه، تابع پایتونی زیر انجام میشود که صرفا جهت مرتب بودن اطلاعات ایجاد شدهاست. در این تابع پوشهای به نام The_Notebook در پوشهی جاری برنامه ایجاد میشود و سپس لوکیشن و آدرس آن در متغیری ذخیره و بازگردانده میشود.
try : os.mkdir ("The_Notebook") #make MAIN directory except FileExistsError: print("") dir=os.getcwd() #Keep location of MAIN directory
کد اصلی برنامه نیز به شرح ذیل است.
dir=Make_Maindirectory() b='-1' while b=='-1': os.chdir(dir+"\The_Notebook") x=MainMenu() if ( x == '1' ) : b=Make_directory() #make directory for memories of one date if ( x == '2' ) : b=read_file(dir) a=input()
در این کد، متغیر b برای چک کردن ورودی و کل عملیات درنظرگرفته شدهاست و تا زمانی که مقدار آن برابر با ۱- باشد دستورات درون حلقهی while تکرار میشوند.
برای فهمیدن اینکه کاربر چه عملیاتی میخواهد انجام دهد یک تابع پایتون در نظر گرفته شده است که به صورت زیر است.
print ("\n1-Make new directory & file for this date \n") print ("2-Read a file\n")
این تابع به صورتی تعریف شدهاست که یک عدد به عنوان ورودی از کاربر دریافت میکند و آن را به مکانی که تابع فرخوانی شده، بازمیگرداند.
۱- ایجاد فایلی برای خاطرات
در کد اصلی اگر کاربر خواهان ایجاد یک فایل متنی جدید باشد تابع Make_directory فراخوانی میشود که این تابع وظیفهی اجاد پوشههای سال و ماه را دارد و کد آن به شرح زیر است.
namedir=time.strftime("%Y",time.localtime()) make_dir2(namedir) os.chdir(namedir) namedir=time.strftime("%b",time.localtime()) make_dir2(namedir) os.chdir(namedir) namedir=time.strftime("%b %d %Y - %H.%M.%S", time.localtime()) Make_file(namedir)
طبق صورت مسئله در این قسمت پوشهای به نام سال جاری ایجاد میشود و یا اگر آن پوشه وجود داشت به عنوان پوشهی جاری انتخاب میشود و سپس پوشهای به نام ماه جاری مشابه پوشهی سال و درون آن (پوشهی سال جاری) ایجاد میشود.
در ادامه یک فایل متنی با عنوان تاریخ و ساعت جاری سیستم توسط تابع پایتونی Make_file ایجاد میشود.
در انتهای تابع Make_file، تابع write که مخصوص نوشتن در فایل است فراخوانی میشود و کاربر میتواند خاطرات را در فایل نوشته و ذخیره نماید.
۲- خواندن خاطرات از فایل
اگر کاربر در منوی اصلی برنامه، گزینهی ۲ یا همان خواندن فایل را انتخاب کند؛ تابع read_file فراخوانی میشود که به صورت زیر است.
print ("\n list of files in The_Notebook: \n",os.listdir(dir+"\The_Notebook")) x=input (" enter the name of folder : \n") try: os.chdir(x) except FileNotFoundError: print("this file dosen't exist") dir=os.getcwd() print ("\n list of folders in \n" ,os.listdir(dir)) x=input (" enter the name of folder : \n") try: os.chdir(x) except FileNotFoundError: print("this file dosen't exist") dir=os.getcwd() print ("\n list of files in \n" ,os.listdir(dir)) x=input (" enter the name of file : \n") try: filecc=open(x+".txt","r") print(filecc.read(),"\n") except IOError: print ("Error: can not find file \n")
این تابع به صورتی عمل میکند که در ابتدا تمام فایلها و پوشههای موجود در پوشهی The_Notebook را نمایش میدهد و سپس از کاربر نام پوشه را دریافت میکند و آن را به عنوان پوشهی جاری قرار میدهد و همین پروسه برای این پوشه تکرار میشود تا زمانی که برنامه درون پوشهی مربوط به یک ماه قرار گیرد آنگاه لیست فایلهای درون پوشه نمایش داده میشوند و کاربر نام فایل مورد نظر را بدون پیشوند وارد میکند سپس محتویات آن فایل روی صفحه نشان داده میشوند.
این کدهای پایتون به صورت کامل و به همراه توابع دیگر در یک فایل متنی به این پست پیوست شده است و شما میتوانید در انتهای پست آن را دانلود کنید.. همچنین برای آشنایی با نحوهی چگونگی اجرای فایل به آموزش هفتم پایتون مراجعه کنید.
لازم به ذکر است برنامه نویسی مبحثی پیچیده است که دارای راهحل های متفاوت و متنوعی است در نتیجه امکان دارد این پروژه چندین راهحل دیگر نیز، داشته باشد؛ لذا چنانچه به راهحل بهتر و کوتاهتری دست پیداکردید آن را با ما به اشتراک بگذارید.
اگر قسمتی از کد برای شما نامفهوم بود، میتوانید سوالات خود را در قسمت نظرات بپرسید. منتظر انتقادات، نظرات و پیشنهادات شما همراهان عزیز هستیم.
همچنین برای گذراندن دوره آموزش پایتون رایگان سطح مقدماتی در چیاب، تبریک ما را پذیرا باشید.
با ما همراه باشید….
فایل پروژه project_python_cheyab
راستی! جهت اطلاع از آخرین اخبار و آموزش های ما میتوانید در کانال تلگرام چ یاب عضو شوید.
مفید بود. ممنون