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