簡體   English   中英

在python中替換文件中的字符串?

[英]Replace String from file In python?

我有一個包含多個電話號碼的文件。 現在我想將此文件的任何行轉換為 VCF 文件。 因此,首先我為具有字符串“THISNUMBER”的 VCF 文件定義了模板模型,我想打開文件(有電話號碼)並將這些行替換為模板模型(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'

改變

outputFile=('D:/xxx/vcfs/%05i.vcf' % counter,'w')

outputFile=open('D:/xxx/vcfs/%05i.vcf' % counter,'w')

如果可以的話,我會寫一個完整的答案,因為我想解決您的代碼風格。

問題很可能是您忘記在outputFile上調用open() 但是讓我向您介紹一種在 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM