仅移动列表中的文件

时间:2018-10-19 19:21:28

标签: python shutil

我正在尝试从一个目录创建一个列表,更改名称以匹配另一种命名约定,并使用该列表引用其他目录中的文件以移入另一个目录。我已经走了这么远,但是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) 

1 个答案:

答案 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))。现在,将文件移至目标文件夹时,您需要剥离根目录并使用目标位置进行更改。