當您使用os.walk
然後通過文件迭代,記住,你只能通過文件名進行迭代 - 不完整路徑(這是由os.rename
才能正常工作需要)。此外
os.rename(os.path.join(directname, filename_zero),
os.path.join(directname, filename_zero.replace(".", "")))
,不知道你是否在其他地方使用,但你可以刪除:您可以通過添加的完整路徑,文件本身,而你的情況將通過加入directname
和filename_zero
表示使用os.path.join
一起調整你的filename_split
變量,並將filename_zero
定義爲filename_zero = os.path.splitext(file)[0]
,這將做同樣的事情。您可能還想將customer_folders_path = r"C:\Users\All\Documents\Cust"
更改爲customer_folders_path = "C:/Users/All/Documents/Cust"
,因爲該目錄將被Python正確解釋。
編輯:正如@bozdoz智能地指出的那樣,當您拆分後綴時,會丟失原始文件,因此無法找到它。下面是應該在你的情況下工作的例子:
import os
customer_folders_path = "C:/Users/All/Documents/Cust"
for directname, directnames, files in os.walk(customer_folders_path):
for f in files:
# Split the file into the filename and the extension, saving
# as separate variables
filename, ext = os.path.splitext(f)
if "." in filename:
# If a '.' is in the name, rename, appending the suffix
# to the new file
new_name = filename.replace(".", "")
os.rename(
os.path.join(directname, f),
os.path.join(directname, new_name + ext))
謝謝你的答案。所以我更新了你的建議,我仍然得到相同的確切的錯誤。我已經檢查了好幾次,以確保我所有的語法都正確無誤。我必須有其他的錯誤。 – wilbev
@wilbev我會嘗試在觸發條件時做一個簡單的'os.path.join(directname,filename_zero)'結果打印 - 基本上,我們要確認它正在重命名的文件確實存在:) – RocketDonkey
@wilbev啊,我剛剛注意到你的初始目錄名 - 嘗試刪除'r'並將反斜槓改爲正斜線(這將被Python正確轉換爲反斜槓)。目錄本身可能導致問題在這裏。 – RocketDonkey