簡體   English   中英

Python更改文件夾中多個文件的文件名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM