发布时间:2019-09-16 07:13:59编辑:auto阅读(1473)
首先声明本人初涉python,由于是自学,而且课余时间比较琐碎,所以打算分主次两条线。主的一条线是看python教程,但是这样实在枯燥,所以又有了次的一条线,就是写一些小程序练练手,只想总结下所得,记录自己学习的历程。
今天写的小程序是提取某文档目录下面的文件名,文档目录里有".txt"".jpg"".bmp"".rm"类型的文件,计划提取后缀名除".rm"以外的文件名并且去后缀,并且存到指定文本文档中,主要涉及到简单的模式匹配和文件操作。
import os filenames=os.listdir('d:\\test\\') out=open('names.txt','w') flag=[] for name in filenames: if '.txt'==name[-4:]: filenames[filenames.index(name)]=name[:-4] flag.append(True) elif '.jpg'==name[-4:]: filenames[filenames.index(name)]=name[:-4] flag.append(True) elif '.rm'==name[-3:]: filenames[filenames.index(name)]=name[:-3] flag.append(True) else: flag.append(False) continue for name in filenames: if flag[filenames.index(name)]: out.write(name+'\n') out.close()
2中调用了OS中的函数,新建了filenames列表,存储原始文件名。涉及到路径问题,这里使用的是绝对路径,测试的文档目录在D盘。貌似有getcwd()方法能取得当前目录,但是我一般为了操作方便,还是会自己设置一个好操作的路径。
3中也可以同理把存储的文档设置为指定路径,'w'表示写操作。
4中新建了一个空列表,主要为了之后标记哪些是我们需要的文件名。
第一个循环主要是为了修改filenames列表,通过匹配filenames的每个子元素,需要的就去掉后缀存储到filenames列表,并在相应的flag列表中标记True;不需要的就标记False。这里的filenames.index(name)表示的是name这一项在filenames列表中的下标。name[start:end]则使用的是字符串分片,start和end分别表示起始下标和结束下标。熟悉java或者c应该知道数组中第一项下标为0,这里python是类似的,但是python中同时也规定了最后一项下标为-1,以此向前类推。所以name[-4:]表示的是name后4个字符,然后与我们需要的后缀名进行比对。
接着使用第二个循环结合flag列表进行文档写操作,最后关闭文档。python中比较蛋疼的是没有case语句,所以只能一遍遍使用if…else…。
其实到这里我已经想到又一个问题了,如果目录中还有目录肿么办?好吧,明天还要实习上班,今天先洗洗碎了,明天我再好好考虑下。
上一篇: Python入门篇(二)
下一篇: python模块fileinput
47844
46390
37284
34735
29313
25973
24916
19951
19545
18030
5792°
6413°
5929°
5962°
7064°
5911°
5944°
6438°
6404°
7778°