Каталог 1: У меня есть несколько файлов txt и один xml файл, который я хочу изменить на каждой итерации в соответствии с содержимым файла txt.
Directory 2: Я хочу скопировать измененный xml файл в этот каталог после каждой итерации.
После выполнения я могу наблюдать измененный xml файл в каталоге 1, который содержит последний контент файла 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)
Вероятно, вы столкнулись с проблемами синхронизации. Файлы не сразу записываются на диск, а буферизируются в памяти, чтобы увеличить общую пропускную способность. Это означает, что в вызове copyfile
не copyfile
последние изменения, внесенные вами в файлы. Попробуйте вызвать f.flush()
перед copyfile
чтобы убедиться, что изменения зафиксированы на диске.
os.system()
? Почему вы используете внешнюю программу для копирования файла вместо стандартной библиотеки Python?