Python os.system cp命令复制空文件

时间:2018-07-27 06:22:39

标签: python

目录1:我有一些txt文件和一个xml文件,我想根据txt文件的内容在每次迭代中进行更改。

目录2:每次迭代后,我想将更改后的xml文件复制到该目录中。

执行后,我可以观察目录1中更改后的xml文件,该文件包含预期的最后一个txt文件内容。但是,目录2包含具有预期名称的空文件。 cp命令中可能存在一些问题?你能帮忙吗?

os.system('cp /home/username/xmlFile.xml /home/username/NewFolder/%s.xml' % myString)

整个脚本:

#!/usr/bin/python
import os
import re
from shutil import copyfile

arr = os.listdir('/di/rec/to/ry')
newArr = []
for j in arr:
        m = re.search('.*txt', j)
        if m != None:
                newArr.append(m.group(0))
for i in newArr:
        myString = ""
        f = open('/home/username/xmlFile.xml', 'r+')
        i = i[:-4]
        data = f.readlines()
        myString += str(i)
        data[10] = data[10][:36] + i + data[10][64:]
        f.truncate(0)
        f.seek(0)
        f.writelines(data)
        #os.system('cp /home/username/xmlFile.xml /home/username/NewFolder/%s.xml' % myString)
        copyfile('/home/username/xmlFile.xml', '/home/username/NewFolder/%s.xml' % myString)

1 个答案:

答案 0 :(得分:1)

您似乎很可能遇到同步问题。文件不会立即写入磁盘,而是缓冲在内存中以提高整体吞吐量。这意味着copyfile调用没有看到您对文件所做的最新更改。尝试在f.flush()之前调用copyfile,以确保所做的更改已提交到磁盘。