文件夾里有多個RM格式的視頻文件,現需要把它們的文件名都提取出來,並去掉文件的擴展名,以便放到需要的網頁里。
源代碼:
# --- picknames.py --- import os filenames=os.listdir(os.getcwd()) for name in filenames: filenames[filenames.index(name)]=name[:-3] out=open('names.txt','w') for name in filenames: out.write(name+'\n') out.close()
解析:
(1)import os,導入os這個函數庫,在Python的術語里叫模塊。
(2)os.getcwd(),返回一個表示當前工作目錄的字符串,若是在 D:\python目錄下執行該程序則此函數返回的就是"D:\python"。程序中將此字符串在作為參數傳遞
給os.listdir()函數,它的作 用是返回一個參數所指定目錄的所有文件名字符串的列表,如果目錄內有文件file1.rm file2.rm file3.rm,則返回值是['file1.rm','file2.rm','file3.rm']
(3)filenames=os.listdir(os.getcwd())將當前工作所有文件名字符串的列表賦值給變量filenames。
(4)for name in filenames:
filenames[filenames.index(name)]=name[:-3]
這里是一個for循環,這里的循環用in關鍵字將 filenames中的元素依次賦給局部變量name,所以一循環一次name就能得到一個文件名字符串,這樣我們就可以歷遍所有的文件名了。for是復 合語句所以用冒號結束,下一行是循環體。
filenames[filenames.index(name)]=name[:-3]這一句,在每次循環里將name中的文件名字符串去 掉最后的3個字符,也就是.rm擴展名,然后重新賦給filenames列表中的每個元素。Python里對列表和字符串等的操作十分靈活,name[: -3]返回了一個新的字符串。它去了name中從開頭到倒數第四個元素,-3表示從最后開始的第三個元素,但在提取操作中並不包括-3所表示的那個元素也 不改變變量name本身。filenames.index(name)返回列表里和name值相同的元素的索引。這樣我們就可以把新的文件名依次賦給 fienames了。
(5)接着我們就可以把它們輸出到一個文本文件里,以后粘貼的到別的地 方。用out=open ('names.txt','w')打開一個名位out的文件對象,open()函數在當前目錄里新
建了一個名位names.txt的文本文件,w表示文 件對象out使用寫模式(Write Mode),參數要用單引號括住。open()是內建函數並非os模塊里的函數,因此也不用os.來限定調用。
(6)接着又是一個循環,依次將filenames里的每個字符串輸出到out文件對象中,同樣要注意行首的縮進。
for name in filenames:
out.write(name+'\n')
out文件對象調用write方法(函數),將每次循環里不同的name的值寫到name.txt文件中。\n想必學過一點編程的人都知道,是轉意字符表示換行符。輸出完畢之后要調用close方法關閉out文件對象:out.close()
這樣一個簡單的程序就完成了,將其保存為 picknames.py,然后復制到需要的目錄中。在cmd命令行提示符窗口下鍵入python picknames.py(擴展名py不可少)或者在文件夾窗口里直接點擊運行它就可以,安裝好的解釋器會自動解釋並運行此程序。運行完畢之后就可以看到 文件夾里多了一個name.txt文件,內容是:
file1
file2
file3
...