背景:我的一個朋友,他可能會有一些強迫症的問題,告訴我一個故事,他如何不打算將他的工作時間用於重命名大量歌曲文件那裏有An,The,Of和更多的大寫字母。文件重命名;我可以得到一些反饋意見
準則:他給了我一個單詞列表,在這裏省略,因爲你會在代碼中看到它們,並告訴我大寫字母是O.K.如果他們在歌曲的開頭,但是否則他們必須是小寫字母。
問題1:這實際上是我的第一個腳本,我正在尋找一些反饋。如果有更好的方法來寫這個,我想看看它,所以我可以改進我的編碼。該腳本是功能性的,並且正是我想要的。
問題2:最初我沒有全部3個功能。我只有取代單詞的功能。由於某些原因,它不適用於看起來像這個「月球黑暗面」的文件。當我運行代碼時,「Of」將被替換,但「The」將不會被替換。因此,通過試驗和錯誤,我發現如果我小寫了文件的第一個字母,那麼執行我的替換功能,最後輸入大寫的文件,它會起作用。任何線索爲什麼?
import os
words = ['A','An','The','Of','For','To','By','Or','Is','In','Out','If','Oh','And','On','At']
fileList = []
rootdir = ''
#Where are the files? Is the input a valid directory?
while True:
rootdir = raw_input('Where is your itunes library? ')
if os.path.isdir(rootdir): break
print('That is not a valid directory. Try again.')
#Get a list of all the files in the directory/sub-directory's
for root, subFolders, files in os.walk(rootdir):
for file in files:
fileList.append(os.path.join(root))
#Create a function that replaces words.
def rename(a,b,c):
for file in os.listdir(c):
if file.find(a):
os.rename(file,file.replace(a,b))
#Create a function that changes the first letter in a filename to lowercase.
def renameL():
for file in os.listdir(os.getcwd()):
if file.find(' '):
os.rename(file,file.replace(file,file[0].lower()+file[1:]))
#Creat a function that changes the first letter in a filename to uppercase.
def renameU():
for file in os.listdir(os.getcwd()):
if file.find(' '):
os.rename(file,file.replace(file,file[0].upper()+file[1:]))
#Change directory/lowercase the first letter of the filename/replace the offending word/uppercase the first letter of the filename.
for x in fileList:
for y in words:
os.chdir(x)
renameL()
rename(y,y.lower(),x)
renameU()
Exit = raw_input('Press enter to exit.')
歡迎來到SO。一些筆記。這是精確回答精確問題的地方。所以,背景是不需要的。另外,*請提供反饋/意見*類型的問題更適合http://programmers.stackexchange.com。 – 2011-03-09 07:45:55
感謝您的意見。 – Chris 2011-03-09 08:33:23