python提取文件名的5-6位_python提取文件名
首先聲明本人初涉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中調(diào)用了OS中的函數(shù),新建了filenames列表,存儲原始文件名。涉及到路徑問題,這里使用的是絕對路徑,測試的文檔目錄在D盤。貌似有getcwd()方法能取得當前目錄,但是我一般為了操作方便,還是會自己設置一個好操作的路徑。
3中也可以同理把存儲的文檔設置為指定路徑,'w'表示寫操作。
4中新建了一個空列表,主要為了之后標記哪些是我們需要的文件名。
第一個循環(huán)主要是為了修改filenames列表,通過匹配filenames的每個子元素,需要的就去掉后綴存儲到filenames列表,并在相應的flag列表中標記True;不需要的就標記False。這里的filenames.index(name)表示的是name這一項在filenames列表中的下標。name[start:end]則使用的是字符串分片,start和end分別表示起始下標和結束下標。熟悉java或者c應該知道數(shù)組中第一項下標為0,這里python是類似的,但是python中同時也規(guī)定了最后一項下標為-1,以此向前類推。所以name[-4:]表示的是name后4個字符,然后與我們需要的后綴名進行比對。
接著使用第二個循環(huán)結合flag列表進行文檔寫操作,最后關閉文檔。python中比較蛋疼的是沒有case語句,所以只能一遍遍使用if…else…。
其實到這里我已經(jīng)想到又一個問題了,如果目錄中還有目錄腫么辦?好吧,明天還要實習上班,今天先洗洗碎了,明天我再好好考慮下。
總結
以上是生活随笔為你收集整理的python提取文件名的5-6位_python提取文件名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ps怎么切割图层(ps怎么切割图层快捷键
- 下一篇: python123读取文本文件并排序输出