使用python将多个文件从一个文件夹移动到另一个文件夹

时间:2015-04-20 05:07:16

标签: python

我有一个“.txt”文件,其中包含各种文件名,我想在source_folder中搜索实际保存这些文件的每个文件名,并且我想将匹配的文件移动到特定文件夹。 Source_folder包含多个文件夹中的文件。

我的.txt文件如下所示:

ant1.aiq
ant2.aiq
ant3.aiq
ant4.aiq

我希望将文本文件(ant1.aiqant2.aiq等)的每一行与文件名匹配,这些文件名存在于某个特定位置(R:\Sample)并将匹配文件提取到某些文件中其他地方(R:\sample\wsa)。

到目前为止,我已经编写了以下代码,但它不起作用:

import os
import shutil

sourceDir = "R:\test_vectors\pxi_wcdma"
targetDir = "R:\\Sample\\wsa"
existingFiles = set(f for f in os.listdir(sourceDir) if os.path.isfile(os.path.join(sourceDir, f)))
infilepath = "aiq_hits.txt"
with open(infilepath) as infile:
    for line in infile:
        fname = line.strip()
        if fname not in existingFiles: continue
            shutil.move(os.path.join(sourceDir, fname),os.path.join(targetDir, fname))

源文件夹的路径是: R:\ test_vectors \ pxi_wcdma pxi_wcdma文件夹包含要复制的.aiq文件

1 个答案:

答案 0 :(得分:3)

我已在我的服务器上对此进行了测试,但它确实有效。 确保路径正确并且您具有读写权限。

import os
import shutil

file = "test.txt"
sourceDir = "R:\\test_vectors\\pxi_wcdma\\"
targetDir = "R:\\Sample\\wsa\\"

for line in open("test.txt") :
    line =  line.rstrip('\n')
    if os.path.isfile(sourceDir+line):
        shutil.move(sourceDir+line, targetDir+line)

有关Windows操作系统上路径名的一些提示:

这适用于linux和windows:

'C:/mydir'

其他可能性是:

'C:\\mydir'

如果您对某些名称有疑问,也可以尝试原始字符串:

r'C:\mydir'