# --- 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()
# --- picknames.py --- 是注釋行,Python是用#作為注釋符的,每行注釋的開始都要添加。Python的源代碼是一擴展名py結尾的。
mport os和其他大多數語言一樣,導入os這個函數庫,在Python的術語里叫模塊。
os.getcwd()的作用是返回一個表示當前工作目錄的字符串,若是在 D:\python目錄下執行該程序則此函數返回的就是"D:\python";
程序中將此字符串在作為參數傳遞給os.listdir()函數,它的作 用是返回一個參數所指定目錄的所有文件名字符串的列表,如果目錄內有文件file1.rm file2.rm file3.rm,則返回值是['file1.rm','file2.rm','file3.rm']。
filenames=os.listdir(os.getcwd())將當前工作所有文件名字符串的列表賦值給變量filenames。
for name in filenames:
? ? filenames[filenames.index(name)]=name[:-3]
for是復 合語句所以用冒號結束,下一行是循環體。
filenames[filenames.index(name)]=name[:-3]這一句,在每次循環里將name中的文件名字符串去 掉最后的3個字符,也就是.rm擴展名,然后重新賦給filenames列表中的每個元素。
Python里對列表和字符串等的操作十分靈活,name[: -3]返回了一個新的字符串。它去了name中從開頭到倒數第四個元素,-3表示從最后開始的第三個元素,但在提取操作中并不包括-3所表示的那個元素也 不改變變量name本身。
filenames.index(name)返回列表里和name值相同的元素的索引。這樣我們就可以把新的文件名依次賦給 fienames了。
接著我們就可以把它們輸出到一個文本文件里,以后粘貼的到別的地 方。
用out=open ('names.txt','w')打開一個名位out的文件對象,open()函數在當前目錄里新建了一個名位names.txt的文本文件,w表示文 件對象out使用寫模式(Write Mode),參數要用單引號括住。
open()是內建函數并非os模塊里的函數,因此也不用os.來限定調用。
接著又是一個循環,依次將filenames里的每個字符串輸出到out文件對象中,同樣要注意行首的縮進。
for name in filenames:
? ? out.write(name+'\n')
out文件對象調用write方法(函數),將每次循環里不同的name的值寫到name.txt文件中。
這個文件我命名為changeName.py,想提取哪個目錄下的文件名,就粘貼到那里運行一下;
當然不然不如直接用dos命令那么方便;