我正在尝试从一个目录创建一个列表,更改名称以匹配另一种命名约定,并使用该列表引用其他目录中的文件以移入另一个目录。我已经走了这么远,但是shutil.move()正在移动整个目录,而不是在列表中搜索匹配的文件名。
我不确定该如何进行,任何帮助将不胜感激!
#Goal is to create list from the reference folder,
#change names in list to match naming convention in the source folder,
#and move only those files to the destination folder.
import os
import shutil
r = input("Reference Folder")
s = input("Source Folder")
d = input("Destination folder")
os.chdir(r)
if not os.path.exists(d):
os.mkdir(d)
#creating filelist from reference folder
filelist = []
for root, dirs, files in os.walk(".", topdown = False):
for file in files:
filelist.append(file)
#changing filelist to match source folder's naming convention.
os.chdir(s)
filelist = [f.replace('filling_mask', 'tex') for f in filelist]
print("Moving these")
print(filelist)
for t in filelist:
shutil.move(s, d)
答案 0 :(得分:1)
好,这是给您的提示,而不是:
for t in filelist:
shutil.move(s, d)
执行以下操作:
for t in filelist:
print('From: {}\nTo: {}'.format(s,d))
break
#shutil.move(s,d)
现在,这里的技巧是确保文件位置和目标文件夹也存在。通过使用打印语句而不是实际移动内容,您可以进行无休止的调试。
提示:filelist.append(file)
仅附加文件名。您还需要包括路径。一种方法是使用os.path.join(os.path.join(root, file)
)。现在,将文件移至目标文件夹时,您需要剥离根目录并使用目标位置进行更改。