综合之前文件与文件夹操作的学习,做以下实例练习:(建议先不要看代码,自己先试着写;代码仅供参考,有多种实现方法)
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"))
新闻热点
疑难解答