用于将包含匹配文本的文件复制或移动到新文件夹的python脚本

时间:2014-09-17 12:33:24

标签: python bash shell

我发现文件夹中包含'ORC'文本的那些文件,包含'ORC'的行的长度大于10.然后我只想将那些匹配的文件复制到目标文件夹,我我坚持了。我的脚本如下:

import re, os
import glob
import shutil

dst = '/home/debarshi/Desktop/DestFolder'


count = 0
list_of_files = glob.glob('./*.hl7')


for fileName in list_of_files:
  fin = open( fileName, "r" )
  for line in fin:
        if 'ORC' in line and len(line) > 10:

            shutil.copyfile(fileName, dst)

请建议一种方法。

2 个答案:

答案 0 :(得分:1)

您的copyfile应该是:

shutil.copyfile(fileName, os.path.join(dst, fileName))

顺便说一下,我注意到glob中的模式是hl7(ach-ell-seven),应该是h17吗?

答案 1 :(得分:0)

假设你希望#行大于10,你应该重新构造你的for循环:

for fileName in list_of_files:
  fin = open( fileName, "r" )
  lineNum = 0
  for line in fin:
        lineNum += 1
        if 'ORC' in line and lineNum > 10:
            fin.close() #close the file before copying.
            shutil.copyfile(fileName, dst + '/' + fileName)

您没有将当前fileName附加到目标路径。此外,您正在检查行(len)中的字符数是否大于10.它应该是行号。此外,您在尝试复制文件之前从未关闭过该文件,这并不好。

有关shutil.copyfile的用法,请参阅here。如有疑问,请使用源文件和目标文件的完整路径(Same适用于glob()中的路径名。