簡體   English   中英

如何根據列表重命名文件夾中的文件?

[英]How to rename files in a folder based on a list?

我有一個包含大約 30 張圖像的文件夾,這些圖像保存為“0001”、“0002”等......等等,我有一個文件名,我想在列表中重命名它們。 我已經編寫了一些代碼,但目前出現錯誤

FileNotFoundError: [WinError 2] 系統找不到指定的文件:'0001.jpg' -> 'Filename1'


 import os

directory = os.fsencode('Folder')
new_filenames = ['Filename1','Filename2'.....]
    
for index, file in enumerate(os.listdir(directory)):
     old_filename = os.fsdecode(file)
      os.rename(old_filename, new_filenames[index]) 

我從這里去哪里?

你可以試試這個:

import os

directory = os.fsencode('Folder')
new_filenames = ['Filename1.jpg','Filename2.jpg'.....]
    
for index, file in enumerate(os.listdir(directory)):
    old_filename = os.fsdecode(file)
    os.rename(old_filename, new_filenames[index]) 

最好使用glob

如果THE_NAME_OF_THE_FOLDER_TO_COPY_FROM已經在您的工作目錄中或提供圖像文件夾的完整路徑,則將其替換為文件夾名稱。

import glob

path= "THE_NAME_OF_THE_FOLDER_TO_COPY_FROM"
images = glob.glob(path + "*.jpg")
print(images)

這是我剛剛測試過的 Windows 10 上的示例路徑。

 path = "C:/Users/ghaith/Desktop/test/"

如果你打印它們,你會看到你得到一個包含每個圖像名稱的列表,比如[FOLDER_NAME/IMAGE_NAME.png, ....]

然后,利用這個列表遍歷所有圖像並分別用replace更改它們的名稱。

因此,據我所知,您想重命名並刪除每張圖像中的000 ,對嗎?

for index, img in enumerate(images):
    os.rename(img, img.replace('000', '')) 

或者您可以使用一行列表理解來編寫它。

[os.rename(img, img.replace('000', '')) for img in images] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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