簡體   English   中英

嘗試使用os.rename時出現FileNotFoundError

[英]FileNotFoundError when trying to use os.rename

我嘗試編寫一些代碼來重命名文件夾中的某些文件-本質上,它們被列為xxx_(a).bmp而它們需要是xxx_a.bmpa運行范圍是1到2000。

我已經使用內置的os.rename函數在循環內交換它們以獲得正確的數字,但這給了我FileNotFoundError [WinError2] the system cannot find the file specified Z:/AAA/BBB/xxx_(1).bmp' -> 'Z:/AAA/BBB/xxx_1.bmp'

如果有人可以指出正確的方向,我將在下面提供的代碼包括在內。 我檢查過我在正確的目錄中工作,它為我提供了期望的目錄,因此我不確定為什么找不到文件。

import os
n = 2000

folder = r"Z:/AAA/BBB/"
os.chdir(folder)

saved_path = os.getcwd()
print("CWD is" + saved_path)

for i in range(1,n):
    old_file = os.path.join(folder, "xxx_(" + str(i) + ").bmp")
    new_file = os.path.join(folder, "xxx_" +str(i)+ ".bmp")
    os.rename(old_file, new_file)
print('renamed files')

嘗試迭代目錄中的文件並處理符合您條件的文件。

from pathlib import Path
import re

folder = Path("Z:/AAA/BBB/")
for f in folder.iterdir():
    if '(' in f.name:
        new_name = f.stem.replace('(', '').replace(')', '')
        # using regex
        # new_name = re.sub('\(([^)]+)\)', r'\1', f.stem)

        extension = f.suffix
        new_path = f.with_name(new_name + extension) 
        f.rename(new_path)

問題是,如果新名稱是當前不存在的目錄中的文件名,則os.rename不會創建新目錄。

為了首先創建目錄,您可以在Python3中執行以下操作:

os.makedirs(dirname, exist_ok=True)

在這種情況下,dirname可以包含已創建或尚未創建的子目錄。

另一種選擇是,可以使用os.renames ,它處理新目錄和中間目錄。

暫無
暫無

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

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