Заменить строку из файла в Python?
У меня есть файл, который содержит несколько номеров телефонов. Теперь я хочу преобразовать любую строку этого файла в файл VCF. Итак, сначала я определил модель шаблона для файла VCF, который имеет строку "THISNUMBER". И я хочу открыть файл (с номерами телефонов) и заменить те строки в модели шаблона (THISNUMBER).
я пишу этот код Python:
template = """BEGIN:VCARD
VERSION:3.0
N:THISNUMBER;;;
FN:THISNUMBER
TEL;TYPE=CELL:THISNUM
END:VCARD"""
inputfile=open('D:/xxx/lst.txt','r')
counter=1
for thisnumber in inputfile:
thisnumber=thisnumber.rstrip()
output=template.replace('THISNUMBER',thisnumber)
outputFile=('D:/xxx/vcfs/%05i.vcf' % counter,'w')
outputFile.write(output)
output.close
print ("writing file %i") % counter
counter +=1
inputfile.close()
Но я даю эту ОШИБКУ:
Traceback (most recent call last):
File "D:\xxx\a.py", line 16, in <module>
outputFile.write(output)
AttributeError: 'tuple' object has no attribute 'write'
2 ответа
Я напишу полноценный ответ, потому что я хочу рассмотреть ваш стиль кода, если это хорошо.
Проблема, скорее всего, что вы забыли позвонить open()
на ваше outputFile
, Но позвольте мне представить вам хороший способ обработки файлов в Python. Таким образом, вам даже не нужно помнить, чтобы позвонить close()
, Все это делается с помощью менеджера контекста. Файл закрывается, когда with
выписка выходит.
template = """BEGIN:VCARD
VERSION:3.0
N:THISNUMBER;;;
FN:THISNUMBER
TEL;TYPE=CELL:THISNUM
END:VCARD"""
with open('D:/xxx/lst.txt', 'r') as inputfile:
counter = 1
for number in inputfile:
number = number.rstrip()
output = template.replace('THISNUMBER', number)
with open('D:/xxx/vcfs/%05i.vcf' % counter, 'w') as outputFile:
outputFile.write(output)
print('writing file %i' % counter)
counter += 1
Изменение
outputFile=('D:/xxx/vcfs/%05i.vcf' % counter,'w')
к
outputFile=open('D:/xxx/vcfs/%05i.vcf' % counter,'w')