我想將特定檔案從不同目錄復制到另一個目錄。每個目錄都有多個具有相同擴展名的檔案。我想將每個目錄中的一個特定檔案復制到另一個檔案夾,并使用索引重命名該檔案。這是我當前根目錄樹的示例。
root--Dir1--subDir1--subDir2
| |--x.bmp
| |--y.bmp
| |-t.txt
Dir2--subDir1--subDir2
| |--x.bmp
| |--y.bmp
| |-t.txt
Dir3--subDir1--subDir2
| |--x.bmp
| |--y.bmp
| |-t.txt
我只想將x.bmp檔案復制到另一個目錄。我想要的目錄將類似于下面給出的示例樹。
NEWDIR
|--x1.bmp
|--x2.bmp
|--x3.bmp
.
.
我通過從其他帖子中獲取幫助撰寫了一個示例代碼塊,但它給了我錯誤。在這里,我發布了代碼片段和錯誤。
import os
import shutil
import glob
root_dir = 'oldDir'
dest_dir = 'NewDir'
os.listdir(root_dir)
for folder in os.listdir(root_dir):
folder_path = os.path.join(root_dir, folder)
if os.path.isdir(folder_path):
for subfolder in os.listdir(folder_path):
subfolder_path = os.path.join(root_dir, folder, subfolder)
for subfolder2 in os.listdir(subfolder_path):
subfolder2_path = os.path.join(root_dir, folder, subfolder,subfolder2)
for filename in os.listdir(subfolder2_path):
if filename == 'X.bmp':
file_path = os.path.join(root_dir, folder, subfolder, subfolder2,filename)
for i in filename:
filename = 'X.bmp'%(i,)
dest_path = os.path.join(dest_dir, filename)
shutil.copy(file_path, dest_path)
print("Copied ", file_path, "to", dest_path)
我收到的錯誤訊息
TypeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_6448/526909518.py in <module>
22 #filename =1
23 for i in filename:
---> 24 filename = 'X.bmp'%(i,)
25 dest_path = os.path.join(dest_dir, filename)
26 shutil.copy(file_path, dest_path)
TypeError: not all arguments converted during string formatting
我在 stackoverflow 中遇到了類似的問題,但答案對我沒有幫助。我很感激這方面的幫助。
uj5u.com熱心網友回復:
您可以glob用于查找所需的檔案。示例如下
import glob, pathlib, shutil
root_dir = r"C:/drive/samples"
target_dir = pathlib.Path(r"C:/drive/samples/D2")
copy_files = list(glob.glob(f"{root_dir}/**/*.bmp",recursive=True))
index =1
for file in copy_files:
file = pathlib.Path(file)
target_file = target_dir / f"{file.stem}{index}{file.suffix}"
shutil.copyfile(file, target_file)
index =1
可能對此有更多改進。但這是最簡單的方法之一,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/330987.html
標籤:蟒蛇-3.x jupyter-笔记本 休蒂尔
上一篇:在最后一個暗淡處填充多個火炬張量
