Skip to main content
 首页 » 编程设计

python之读/写文本文件

2025年05月04日14exmyth

我试图在不影响其他行的情况下更改文本文件中的某些行。这是名为“text.txt”的文本文件中的内容

this is  a test1|number1 
this is a test2|number2 
this is a test3|number2 
this is a test4|number3 
this is a test5|number3 
this is a test6|number4 
this is a test7|number5 
this is a test8|number5 
this is a test9|number5 
this is a test10|number5 

我的目标是更改第 4 行和第 5 行,但保持其余部分不变。

mylist1=[] 
for lines in open('test','r'): 
    a=lines.split('|') 
    b=a[1].strip() 
    if b== 'number3': 
        mylist1.append('{}|{} \n'.format('this is replacement','number7')) 
    else: 
         mylist1.append('{}|{} \n'.format(a[0],a[1].strip())) 
myfile=open('test','w') 
myfile.writelines(mylist1) 

即使代码有效,我想知道是否有更好、更有效的方法来做到这一点?是否可以仅通过行号读取文件?

请您参考如下方法:

您可以改进的地方不多。但是你必须将所有行写入一个新文件,无论是更改还是未更改。小的改进是:

  • 使用with语句;
  • 避免在列表中存储行;
  • 在 else 子句(如果适用)中编写不带格式的行。

应用以上所有内容:

import shutil 
with open('test') as old, open('newtest', 'w') as new: 
    for line in old: 
        if line.rsplit('|', 1)[-1].strip() == 'number3': 
            new.write('this is replacement|number7\n') 
        else: 
            new.write(line) 
shutil.move('newtest', 'test')