[英]Python/Pandas - Read multiple files in a folder based on dates in filenames
[英]Python changing filenames of multiple files in a folder
我正在嘗試制作一個腳本來重命名文件夾中的所有文件,這是我的代碼,但它不起作用。 我在該文件夾中有200個圖像,我想將filename1_更改為filename1,依此類推所有文件。 轉變是dog_1到doggy1; 或者其他什么,文件的新名稱可以是任何東西。 有人可以幫幫我嗎? 我還是python的新手,所以我現在的代碼可能看起來沒什么。
import os
directoryname="C:\\Users\\Ineke\\Documents\\Python Scripts\\images"
lijstmetfiles = os.listdir(directoryname)
for i in range(len(lijstmetfiles)):
os.rename(str(lijstmetfiles[i]), str("doggy"+str(i))
我運行了你的代碼,這是你的兩個主要問題:
第一個是,你沒有關閉os.rename
行的括號。
你有這個:
os.rename(str(lijstmetfiles[i]), str("doggy"+str(i))
你錯過了一個括號,所以應該是:
os.rename(str(lijstmetfiles[i]), str("doggy"+str(i)))
但是,這可能是將代碼復制到帖子中的編輯問題。
其次,最重要的是,您沒有指定要重命名的路徑,您只是提供兩個文件名,因此您很可能會收到文件未找到錯誤。
您需要使用您的目錄和文件名來使用Python的os.path.join
方法,如下面的代碼示例所示:
os.rename(
os.path.join(directoryname, str(lijstmetfiles[i])),
os.path.join(directoryname, str("doggy"+str(i)))
)
所以現在您明確指定重命名的完整路徑。
另一個要點,你不需要為你的文件名強制轉換為“str”。 例如,即使您的文件名為5
,從listdir
獲取文件列表仍將以字符串形式返回。
最后,把它們放在一起,你的代碼應該是這樣的:
import os
directoryname="C:\\Users\\Ineke\\Documents\\Python Scripts\\images"
lijstmetfiles = os.listdir(directoryname)
print(lijstmetfiles)
for i in range(len(lijstmetfiles)):
os.rename(
os.path.join(directoryname, lijstmetfiles[i]),
os.path.join(directoryname, "doggy"+str(i))
)
我在我的最后測試了它,它應該工作。
這是os模塊的文檔。 看一下它,以便進一步了解在使用文件系統時可以使用的內容:
Python 2: https : //docs.python.org/2/library/os.html
Python 3: https : //docs.python.org/3/library/os.html
以下代碼將使用相似的名稱重命名該目錄中的所有文件,但使用_
excluded。
#UNTESTED
import os
directoryname="C:\\Users\\Ineke\\Documents\\Python Scripts\\images"
lijstmetfiles = os.listdir(directoryname)
for i in lijstmetfiles:
os.rename(os.path.join(directoryname, i),
os.path.join(directoryname,
i.replace('_','')))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.