綜合之前文件與文件夾操作的學習,做以下實例練習:(建議先不要看代碼,自己先試著寫;代碼僅供參考,有多種實現方法)
1. 目錄文件遍歷(二層目錄結構)
1). 使用之前學習示例的文件夾模擬;PRint 出對應目錄的目錄結構,需縮進;a. 第一行print目標目錄 b.具體的二層目錄結構(一層文件夾后加/),文件加文件名后綴
2). 不僅print出結果,將上述print的內容保存至當前工作目錄下的 dir_demo.txt 文件中,
可下載后解壓至D盤:%20http://files.VEVb.com/files/feeland/Python_shutil.rar
示例的要求結果如下:
%20
1 # !/usr/bin/config python 2 # -*- coding:utf-8 -*- 3 4 import os 5 def listdir(d,f): 6 d_list = os.listdir(d) # 列出目錄下的所有文件和目錄 7 print (d) 8 f.write(d + '/n') 9 10 for i in d_list:11 filepath = os.path.join(d,i)12 if os.path.isdir(filepath): # 如果filepath 是目錄,則再列出該目錄下的所有文件13 print ('/t' + i + '//')14 f.write('/t' + i + '//'+'/n')15 for li in os.listdir(filepath):16 print ('/t/t'+li)17 f.write('/t/t'+li+'/n')18 elif os.path: # 如果filepath是文件,直接列出文件名19 print ('/t'+i)20 f.write('/t'+i+'/n')21 22 23 demo_dir = u"D:/Python_shutil"24 25 with open('dir_demo.txt','w') as f:26 listdir(demo_dir,f)
示例使用 "/t" 表示縮進;注意 file.write() 函數不會自動換行,print會打印換行。
2. 在 D://demo2 文件夾下,創建5個txt文件,名稱及txt的內容分別為 test1、test2 ... test5
1). 判斷 D://demo2 文件夾是否存在,若存在,清空該文件夾里所有文件 (請務必確保無你需要的文件);若不存在,創建該文件夾
2). 創建txt文件,示例的要求結果如下:
1 import os,shutil,time 2 3 os.chdir("d://") 4 dir_name = u"demo2" 5 dir_abs = os.path.join(os.getcwd(),dir_name) 6 if os.path.exists(dir_abs): 7 shutil.rmtree(dir_abs) 8 time.sleep(1) # 刪除操作之后最好加個等待時間,不然后續 mkdir 操作可能報錯 9 os.mkdir(dir_name)10 os.chdir(dir_abs)11 12 for i in range(1,6):13 txt_name = "test{0}.txt".format(i)14 with open(txt_name,"w") as f:15 f.write("test{0}".format(i))
3. 文件類型判斷及移動操作,請將示例文件夾解壓至D盤目錄下(請確保無相同文件夾) http://files.VEVb.com/files/feeland/python_demo_pic.rar
%20解壓后文件夾顯示
1). %20print%20出示例文件夾中所有圖片類型的文件名稱(.bmp .jpeg .gif .PSD .png .jpg)
2). 新建一個文件夾 pic(可確保 D://python_demo_pic 無該文件夾),將上述圖片文件移至該 pic 文件夾內
%20pic%20文件夾中為移動的圖片文件
1 import os,shutil 2 3 img_dir = 'D://python_demo_pic' 4 img_ext = (".bmp",".jpeg",".gif",".psd",".png",".jpg") 5 6 os.chdir(img_dir) 7 os.mkdir("pic") 8 9 for i in os.listdir(img_dir):10 if os.path.splitext(i)[1] in img_ext:11 print i12 shutil.move(i, os.path.join(os.getcwd(),"pic"))
新聞熱點
疑難解答