我发现文件夹中包含'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)
请建议一种方法。
答案 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()中的路径名。