sonichuang 发表于 2018-6-23 10:41:08

python open 文件的操作

我本想把文件内容里面的huang替换成boy, 如图片所示是可以替换掉的,但是代码运行完之后发现最终是
没有被替换,我想是不是因为文件的打开方式不正确,需要怎么修改呢?


file = open('sonic1.txt', 'r+')
for eachline in file:
    if 'huang' in eachline:
      eachline.replace('huang', 'boy')
    print(eachline)
file.close()

BngThea 发表于 2018-6-23 11:00:35

读完以后要写入,你的替换操作只在内存中进行,没有写入文件

thexiosi 发表于 2018-6-23 11:05:22

hi 请lz参考

你的代码缺失写入。先读取、后写入
with open('sonic1.txt' , 'r' ) as f: #先把文件内容读取到内存中
    lines = f.readlines()


with open('sonic1.txt' , 'w') as f_write:#执行替换并写入
    for line in lines:
      if 'huang' in line:
            line = line.replace('huang' , 'boy' )
      f_write.write(line)

凌九霄 发表于 2018-6-23 12:55:39

thexiosi 发表于 2018-6-23 11:05
hi 请lz参考

你的代码缺失写入。先读取、后写入

用不着两次open吧

thexiosi 发表于 2018-6-23 13:59:26

凌九霄 发表于 2018-6-23 12:55
用不着两次open吧

嗯,应该有更好的解决方案

sonichuang 发表于 2018-6-23 21:53:19

凌九霄 发表于 2018-6-23 12:55
用不着两次open吧

要怎么改才不用两次打开文件呢?

凌九霄 发表于 2018-6-23 22:00:36

sonichuang 发表于 2018-6-23 21:53
要怎么改才不用两次打开文件呢?

其实也是擦了重写

with open('sonic1.txt', 'r+') as f:
    line = f.read()
    line = line.replace('huang' , 'boy')
    f.seek(0)
    f.truncate(0)
    f.write(line)
页: [1]
查看完整版本: python open 文件的操作