鱼C论坛

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

[已解决]文件操作问题

[复制链接]
发表于 2020-2-3 17:53:37 | 显示全部楼层 |阅读模式

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

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

x

  1. def file_replace(filename,old_word,new_word):
  2.     f = open(filename,'r+')
  3.     counts = 0
  4.     for eachline in f:
  5.         if old_word in eachline:
  6.             counts += 1
  7.    
  8.     print("文件%s中共有%d个【%s】" % (filename,counts,old_word))
  9.     print("你确定要把所有的【%s】替换为【%s】吗" % (old_word,new_word))

  10.     flag = input("【YES/NO】:")
  11.    
  12.     if flag == 'yes':
  13.         return True
  14.     else:
  15.         return False

  16.     while flag:
  17.         f.readline().repalce(old_word,new_word)

  18.     f.close()

  19. filename = input("请输入文件名(c:\\test.txt):")
  20. old_word = input("请输入需要替换的单词或字符串:")
  21. new_word = input("请输入新的单词或字符串:")

  22. file_replace(filename,old_word,new_word)
复制代码


输入yes后,没有替换字符

问题应该在:  f.readline().repalce(old_word,new_word)。
f.readline()返回的是字符串,然后replace,不能写入文件?
这个是不是只能替换一行?
最佳答案
2020-2-3 18:08:58
本帖最后由 冬雪雪冬 于 2020-2-3 18:14 编辑
redforce 发表于 2020-2-3 18:00
1、f.readline().repalce(old_word,new_word) 这种方式能写入到文件吗?
2、如果不用循环,那个是替换一 ...


帮你改了一下:
  1. def file_replace(filename,old_word,new_word):
  2.     f = open(filename)
  3.     counts = 0
  4.     for eachline in f:
  5.         if old_word in eachline:
  6.             counts += 1
  7.    
  8.     print("文件%s中共有%d个【%s】" % (filename,counts,old_word))
  9.     print("你确定要把所有的【%s】替换为【%s】吗" % (old_word,new_word))

  10.     flag = input("【YES/NO】:")
  11.    
  12.     if flag == 'yes':
  13.         content = []
  14.         content.append(each.replace(old_word,new_word))
  15.         f.close()
  16.         f = open(filename, 'w')
  17.         f.writelines(content)
  18.         f.close()
  19.     f.close()
  20.         

  21. filename = input("请输入文件名(c:\\test.txt):")
  22. old_word = input("请输入需要替换的单词或字符串:")
  23. new_word = input("请输入新的单词或字符串:")

  24. file_replace(filename,old_word,new_word)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-3 17:54:31 | 显示全部楼层
>>>
RESTART: C:/Users/Administrator/AppData/Local/Programs/Python/Python37/replace_file.py
请输入文件名(c:\test.txt):E:\\fishc\\record.txt
请输入需要替换的单词或字符串:甲鱼
请输入新的单词或字符串:乌龟
文件E:\\fishc\\record.txt中共有8个【甲鱼】
你确定要把所有的【甲鱼】替换为【乌龟】吗
【YES/NO】:yes
>>>
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 17:56:53 | 显示全部楼层
到这步
    if flag == 'yes':
        return True
    else:
        return False
函数就结束了,不会执行后面的语句。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 18:00:18 | 显示全部楼层
冬雪雪冬 发表于 2020-2-3 17:56
到这步
    if flag == 'yes':
        return True

还有错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 18:00:20 | 显示全部楼层
冬雪雪冬 发表于 2020-2-3 17:56
到这步
    if flag == 'yes':
        return True

1、f.readline().repalce(old_word,new_word) 这种方式能写入到文件吗?
2、如果不用循环,那个是替换一行还是替换所有行?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 18:08:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 冬雪雪冬 于 2020-2-3 18:14 编辑
redforce 发表于 2020-2-3 18:00
1、f.readline().repalce(old_word,new_word) 这种方式能写入到文件吗?
2、如果不用循环,那个是替换一 ...


帮你改了一下:
  1. def file_replace(filename,old_word,new_word):
  2.     f = open(filename)
  3.     counts = 0
  4.     for eachline in f:
  5.         if old_word in eachline:
  6.             counts += 1
  7.    
  8.     print("文件%s中共有%d个【%s】" % (filename,counts,old_word))
  9.     print("你确定要把所有的【%s】替换为【%s】吗" % (old_word,new_word))

  10.     flag = input("【YES/NO】:")
  11.    
  12.     if flag == 'yes':
  13.         content = []
  14.         content.append(each.replace(old_word,new_word))
  15.         f.close()
  16.         f = open(filename, 'w')
  17.         f.writelines(content)
  18.         f.close()
  19.     f.close()
  20.         

  21. filename = input("请输入文件名(c:\\test.txt):")
  22. old_word = input("请输入需要替换的单词或字符串:")
  23. new_word = input("请输入新的单词或字符串:")

  24. file_replace(filename,old_word,new_word)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 18:10:37 | 显示全部楼层
  1. Traceback (most recent call last):
  2.   File "C:\Users\Angel\桌面\test.py", line 27, in <module>
  3.     file_replace(filename,old_word,new_word)
  4.   File "C:\Users\Angel\桌面\test.py", line 15, in file_replace
  5.     content.append(each.replace(old_word,new_word))
  6. NameError: name 'each' is not defined
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-4 06:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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