我正在尝试使用os.walk()
模块浏览多个目录,并将每个目录的内容移动到一个“文件夹”(dir)中。
在这个特定的例子中,我有数百个需要移动的.txt文件。我尝试使用shutil.move()
和os.rename()
,但它没有用。
import os
import shutil
current_wkd = os.getcwd()
print(current_wkd)
# make sure that these directories exist
dir_src = current_wkd
dir_dst = '.../Merged/out'
for root, dir, files in os.walk(top=current_wkd):
for file in files:
if file.endswith(".txt"): #match files that match this extension
print(file)
#need to move files (1.txt, 2.txt, etc) to 'dir_dst'
#tried: shutil.move(file, dir_dst) = error
如果有办法移动目录的所有内容,我也会对如何做到这一点感兴趣。
非常感谢您的帮助!谢谢。
这是文件目录和内容
current_wk == ".../Merged
在current_wk
中有:
Dir1
Dir2
Dir3..
combine.py # python script file to be executed
在每个目录中有数百个.txt
个文件。
答案 0 :(得分:0)
需要简单的路径数学来精确查找源文件和目标文件。
import os
import shutil
src_dir = os.getcwd()
dst_dir = src_dir + " COMBINED"
for root, _, files in os.walk(current_cwd):
for f in files:
if f.endswith(".txt"):
full_src_path = os.path.join(src_dir, root, f)
full_dst_path = os.path.join(dst_dir, f)
os.rename(full_src_path, full_dst_path)
答案 1 :(得分:0)
您必须准备源文件的完整路径,并确保dir_dst存在。
for root, dir, files in os.walk(top=current_wkd):
for file in files:
if file.endswith(".txt"): #match files that match this extension
shutil.move(os.path.join(root, file), dir_dst)