میخوام درباره متد ( )os.walk از کتابخونونه OS در پایتون چیزایی که فهمیدمو بگم
این تصویرو ببینید
همونطور که میبینید ما یک پوشه اصلی _root_ داریم به اسم DEVOPS که این پوشه اصلی سه تا پوشه درونش به اسم های dev1 و dev2 وdev3 داره و پوشه dev1 هم درون خودش دوتا پوشه dev1-1 و dev1-2 و دوتام فایل متنیه dev1-1.txt و dev1-2.txt رو درون خودش داره و پوشه dev2 هم درون خودش یه پوشه dev2-1 و یه دونه فایل متنی dev2-1.txt داره و پوشه dev3 هم یدونه فایل متنی dev3-1.txt داره. و به یه نکته ریزم توجه دارید که dev1 به عنوان ریشه برای پوشه ها و فایل های درونیش به حساب میاد و همینطور dev2 به عنوان ریشه برای پوشه و فایل درونیش و dev3 هم به عنوان ریشه برای فایل درونیش.
حالا ما اگه بخوایم از پوشه اصلی DEVOPSحرکت کنیم و به فایل متنی dev1-2.txt برسیم باید چه مسیری رو طی کنیم؟ میریم به پوشه dev1 بعد از اونجام میرسیم به فایل مورد نظرمون حالا اگه بخوایم از فایل dev1-2.txt که درون پوشه dev1 هستش برگردیم به پوشه DEVOPS چه مسیری طی می کنیم؟ از پوشه dev1 برمیگردیم عقب و میرسیم به پوشه اصلی یعنی هم میتونیم از بالا به پایین و از پایین به بالا تو همه ی مسیر های موجود حرکت کنیم
os.walk(top[, topdown=True[, =None[, followlinks=False]]])
پارامتر top ، اشاره به پوشه اصلی در هر مسیری که هست داره که یه tupel سه تایی برمی گردونه پارامتر topdow ، که بصورت پیش فرض مقدارش True هست یعنی مسیر رو از بالا به پایین پیمایش میکنه و اگه False کنیم مسیر از پایین به بالا پیمایش میکنه oneerror و followlinks نفهمیدم دقیق منظورش چیه میتونید از این لینک ببینید ; )
حالا بریم ببینیم این دستور دقیقا چیکار میکنه
import os x=r'C:\Users\enaknar\Desktop\pycharm\devops' for r, d, f in os.walk(x): print(r) #یا import os x=r'C:\Users\enaknar\Desktop\pycharm\devops' for root,dirs,file in os.walk(x): print(root)
میایم مسیری که به پوشه DEVOPS میرسه رو با استفاده از متد r در یه متغییر x ذخیره میکنیم بعد یه حلقه for روی ( )os.walk میزنیم چونکه گفتیم پارامتر top یه tuple سه تایی بر میگردونه برای همینم مام سه تا پارامتر تعریف میکنیم که بتونیم مقادیر داخل tupleها رو بگیریم
با اجرای دستور بالا همه مسیرهایی که به پوشه ها درونیشون ختم میشنو از ریشه اصلی بهمون نشون میده (چون ما پوشه DEVOPS رو تو دسکتاپ ایجاد کردیم بنابراین درایو C به عنوان ریشه اصلی حساب میشه)
C:\Users\enaknar\Desktop\pycharm\devops C:\Users\enaknar\Desktop\pycharm\devops\dev1 C:\Users\enaknar\Desktop\pycharm\devops\dev1\dev1-1 C:\Users\enaknar\Desktop\pycharm\devops\dev1\dev1-2 C:\Users\enaknar\Desktop\pycharm\devops\dev2 C:\Users\enaknar\Desktop\pycharm\devops\dev2\dev2-1 C:\Users\enaknar\Desktop\pycharm\devops\dev3
import os x=r'C:\Users\enaknar\Desktop\pycharm\devops' for r,d,f in os.walk(x): print(d)
['dev1', 'dev2', 'dev3'] ['dev1-1', 'dev1-2'] [] [] ['dev2-1'] [] []
import os x=r'C:\Users\enaknar\Desktop\pycharm\devops' for r,d,f in os.walk(x): for i in d: print(i)
اینجا فقط پوشه های درونی DEVOPS و یعنی dev1,dev2,dev3 و زیر پوشه های dev1, dev2 رو نشون میده
dev1 dev2 dev3 dev1-1 dev1-2 dev2-1
برای دیدن مثال های بیشتر هم میتونید برید به این لینک که منبع توضحیاتم بود :)