【发布时间】:2021-10-13 06:27:56
【问题描述】:
我想将输入文件夹及其子目录中的某种类型的文件移动到输出文件夹,但保留输入文件夹中的文件夹结构。
换种说法: 名为“input”的文件夹及其子目录中的所有 PNG 文件都应移至“output”文件夹,包括其父目录结构。
输入文件夹的结构:
+ input
| |+ input_1.png
| |+ input_2.png
| |+ input_3.png
| |+ input_4.jpg
| |+ input_5.jpg
| |+ input_6.jpg
| |+ subfolder_1
| |+ 1_1.png
| |+ 1_2.png
| |+ 1_3.png
| |+ 1_4.jpg
| |+ 1_5.jpg
| |+ 1_6.jpg
| |+ subfolder_2
| |+ 2_1.png
| |+ 2_2.png
| |+ 2_3.png
| |+ 2_4.jpg
| |+ 2_5.jpg
| |+ 2_6.jpg
| |+ subfolder_2_1
| |+ 2_1_1.png
| |+ 2_1_2.png
| |+ 2_1_3.jpg
| |+ 2_1_4.jpg
目标是:
+ input
| |+ input_4.jpg
| |+ input_5.jpg
| |+ input_6.jpg
| |+ subfolder_1
| |+ 1_4.jpg
| |+ 1_5.jpg
| |+ 1_6.jpg
| |+ subfolder_2
| |+ 2_4.jpg
| |+ 2_5.jpg
| |+ 2_6.jpg
| |+ subfolder_2_1
| |+ 2_1_3.jpg
| |+ 2_1_4.jpg
+ output
| |+ input_1.png
| |+ input_2.png
| |+ input_3.png
| |+ subfolder_1
| |+ 1_1.png
| |+ 1_2.png
| |+ 1_3.png
| |+ subfolder_2
| |+ 2_1.png
| |+ 2_2.png
| |+ 2_3.png
| |+ subfolder_2_1
| |+ 2_1_1.png
| |+ 2_1_2.png
这是我目前所拥有的:
import os
import shutil
input_folder_name = "input"
input_path = os.path.join(os.getcwd(),input_folder_name)
output_folder_name = "output"
output_path = os.path.join(os.getcwd(),output_folder_name)
for root, dirs, files in os.walk(input_path):
for file in files:
if file.endswith(".png"):
file_source_path = os.path.join(root, file)
file_output_path = file_source_path.replace(input_folder_name,output_folder_name)
print("input:",file_source_path)
print("output:",file_output_path)
shutil.move(file_source_path,file_output_path)
直接在“输入”文件夹中的文件被移动,但不幸的是,一旦必须移动子文件夹的第一个文件,就会显示错误消息。 错误消息说,目标文件不存在,这当然是真的,因为应该使用 shutil.move() 创建。
有人知道它为什么不工作吗? 每一个提示都表示赞赏。
谢谢。 :)
【问题讨论】:
标签: python file directory move