3

我正在寻找一个python脚本,将文件/目录从一个目录移动到另一个目录,同时引用一个记录要复制的文件的列表。

到目前为止,这是我所拥有的:

import os, shutil

// Read in origin & destination from secrets.py Readlines() stores each line followed by a '/n' in a list

    f = open('secrets.py', 'r')
    paths = f.readlines()

// Strip out those /n

    srcPath = paths[0].rstrip('\n')
    destPath = paths[1].rstrip('\n')

// Close stream

    f.close()

// Empty destPath

    for root, dirs, files in os.walk(destPath, topdown=False):
        for name in files:
            os.remove(os.path.join(root, name))
        for name in dirs:
            os.rmdir(os.path.join(root, name))

// Copy & move files into destination path

    for srcDir, dirs, files in os.walk(srcPath):
        destDir = srcDir.replace(srcPath, destPath)
        if not os.path.exists(destDir):
            os.mkdir(destDir)
        for file in files:
            srcFile = os.path.join(srcDir, file)
            destFile = os.path.join(destDir, file)
            if os.path.exists(destFile):
                os.remove(destFile)
            shutil.copy(srcFile, destDir)

secrets.py 文件包含 src/dest 路径。

目前,这会传输所有文件/目录。我想读入另一个文件,该文件允许您指定要传输的文件(而不是制作“忽略”列表)。

4

1 回答 1

1

你应该阅读文件列表

 f = open('secrets.py', 'r')
 paths = f.readlines()

 f_list = open("filelist.txt", "r")
 file_list = map(lambda x: x.rstrip('\n'), f_list.readlines())

 ....
 ....

并在复制前检查

    for file in files: 
       if file in file_list# <--- this is the condition you need to add to your code
          srcFile = os.path.join(srcDir, file)
       ....

如果您的文件列表包含要复制的文件名模式,请尝试使用 python 的“re”模块来匹配您的文件名。

于 2012-11-06T19:29:37.677 回答