[英]FileNotFoundError when using os.rename() in Python
[英]FileNotFoundError when trying to use os.rename
我嘗試編寫一些代碼來重命名文件夾中的某些文件-本質上,它們被列為xxx_(a).bmp
而它們需要是xxx_a.bmp
, a
運行范圍是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.