鱼C论坛

 找回密码
 立即注册
查看: 2656|回复: 6

[已解决]python open 文件的操作

[复制链接]
发表于 2018-6-23 10:41:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

最佳答案
2018-6-23 22:00:36
sonichuang 发表于 2018-6-23 21:53
要怎么改才不用两次打开文件呢?

其实也是擦了重写

  1. with open('sonic1.txt', 'r+') as f:
  2.     line = f.read()
  3.     line = line.replace('huang' , 'boy')
  4.     f.seek(0)
  5.     f.truncate(0)
  6.     f.write(line)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-23 11:00:35 From FishC Mobile | 显示全部楼层
读完以后要写入,你的替换操作只在内存中进行,没有写入文件

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
sonichuang + 1 + 1 + 1 感谢解答。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-23 11:05:22 | 显示全部楼层
hi 请lz参考

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


  3. with open('sonic1.txt' , 'w') as f_write:  #执行替换并写入
  4.     for line in lines:
  5.         if 'huang' in line:
  6.             line = line.replace('huang' , 'boy' )
  7.         f_write.write(line)
复制代码

评分

参与人数 1荣誉 +2 鱼币 +1 贡献 +1 收起 理由
sonichuang + 2 + 1 + 1 感谢您的解答。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 1

使用道具 举报

发表于 2018-6-23 12:55:39 | 显示全部楼层
thexiosi 发表于 2018-6-23 11:05
hi 请lz参考

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

用不着两次open吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-23 13:59:26 | 显示全部楼层

嗯,应该有更好的解决方案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-23 21:53:19 From FishC Mobile | 显示全部楼层
凌九霄 发表于 2018-6-23 12:55
用不着两次open吧

要怎么改才不用两次打开文件呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-23 22:00:36 | 显示全部楼层    本楼为最佳答案   
sonichuang 发表于 2018-6-23 21:53
要怎么改才不用两次打开文件呢?

其实也是擦了重写

  1. with open('sonic1.txt', 'r+') as f:
  2.     line = f.read()
  3.     line = line.replace('huang' , 'boy')
  4.     f.seek(0)
  5.     f.truncate(0)
  6.     f.write(line)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +2 贡献 +1 收起 理由
sonichuang + 3 + 2 + 1 感谢您的解答。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-17 19:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表