我是一個自學成才的Python新手,我已經對python的運行方式有了一個基本的瞭解,但是我堅持以下幾點。在Python中重命名文件
我有一個文本文件列表,它是郵箱名稱的交換服務器郵件轉儲。我有數百個這些文本文件,它們目前的名稱格式爲Priv_date.txt
,例如Priv_02JAN2004.txt
。我需要能夠告訴他們來自哪些服務器,因此在這些文本文件中,我想要讀取具有實際郵件服務器名稱(服務器:MAILSERVER1)的10行,並將其添加或附加到原始文件名。
我想結束的文件名是MAILSERVER1_PRIV_02JAN2004.txt
。我對自己能做什麼也做不了,對文件路徑和名稱感到困惑,但看不出我做錯了什麼。據我得爲這樣:
import os,sys
folder = "c://EDB_TEMP"
for root, dirs, filenames in os.walk(folder):
for filename in filenames:
fullpath=os.path.join(root,filename)
filename_split = os.path.splitext(fullpath)
#print fullpath
#print filename
with open (fullpath, "r") as tempfile:
for line in tempfile.readlines():
if "Server:" in line:
os.rename(tempfile,+line[10:]+fullpath)
但我不斷收到此錯誤:
error is TypeError: bad operand type for unary +: 'str'
感謝您的輸入。我可以看到我在原文中錯過了什麼。我一直在看你已經添加的代碼o0rebelious0o(謝謝!)我已經通過了它,所以它對我來說很有意義,但我仍然得到一個錯誤:[Error 32]進程無法訪問文件,因爲它是被另一個進程使用 不知道爲什麼。我已經使用過Proc Explorer,並檢查了開始解鎖,我甚至嘗試添加一個新的路徑到根變量,所以重命名應該發生在不同的目錄中,但似乎沒有任何區別。我正在使用Windows 7x64位操作系統。 – user2377057 2013-05-13 19:54:11
它給你這個錯誤的原因是因爲你試圖在while文件打開塊內重命名文件。文件處於打開狀態時,操作系統會鎖定它,因此無法重命名。使用python時,需要注意的一點是,縮進塊的處理方式與使用java和C等語言中的加緊代碼相同,所有縮進的代碼都在相同條件下執行,即在with語句中執行。你所需要做的就是把if()語句與with open語句聯繫起來,它應該在理論上起作用。另請檢查創建.txt日誌的進程是否未運行 – o0rebelious0o 2013-05-13 21:46:48
再次感謝。這就說得通了。我可能要求在一根棍子上的月球......在Python中:-) ..但我現在得到一個錯誤123文件名,目錄,卷是不正確的。我已經完成了最後一行的打印,並且它(或者也許是我)似乎將一個eol字符放在行中,所以輸出看起來像MAILSERVER \ nPRIV_02JAN2004.txt。我看不出爲什麼。 – user2377057 2013-05-14 05:29:33