鱼C论坛

 找回密码
 立即注册
查看: 1566|回复: 13

[已解决]小甲鱼课后作业29动动手4

[复制链接]
发表于 2021-9-17 10:12:13 | 显示全部楼层 |阅读模式

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

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

x
t = input('write a name: ')
s = input('write you want to remove word: ')
y = input('write you want word: ')
doc=open(t,'w')
f = doc.read()
k = f.count(s)
print('have %s in %s'%(k,t))
r =input('do you want to remove?(y/n): ')
if r =='y':
    f = f.replace(s,y)
doc.close()

为什么没有效果,改完文件没有变化?
   

   

   
   
最佳答案
2021-9-17 10:38:28
全桥整流 发表于 2021-9-17 10:27
但是我读取就不能写入了,写入又不能读取,是不是要分两步?



r+ 是以读写方式打开

另外你代码中只更改了 字符串的 内容

而没有将字符串重新写入文本中去,如果想重新写入文本中,应该在 doc.close() 前加上代码:
doc.write(f)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-17 10:22:46 | 显示全部楼层
Traceback (most recent call last):
  File "C:\Users\lyl\AppData\Local\Programs\Python\Python39\41.py", line 5, in <module>
    f = doc.read()
io.UnsupportedOperation: not readable

欸啊,改代码改到快疯了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-17 10:25:27 | 显示全部楼层
全桥整流 发表于 2021-9-17 10:22
Traceback (most recent call last):
  File "C:%users\lyl\AppData\Local\Programs\Python\Python39\41.p ...



你打开方式是 'w' 写入打开,当然不能读取~,改成 r+ 试试看

参考代码:
t = input('write a name: ')
s = input('write you want to remove word: ')
y = input('write you want word: ')
doc=open(t,'r+')
f = doc.read()
k = f.count(s)
print('have %s in %s'%(k,t))
r =input('do you want to remove?(y/n): ')
if r =='y':
    f = f.replace(s,y)
doc.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-17 10:27:06 | 显示全部楼层
Twilight6 发表于 2021-9-17 10:25
你打开方式是 'w' 写入打开,当然不能读取~

但是我读取就不能写入了,写入又不能读取,是不是要分两步?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-17 10:38:28 | 显示全部楼层    本楼为最佳答案   
全桥整流 发表于 2021-9-17 10:27
但是我读取就不能写入了,写入又不能读取,是不是要分两步?



r+ 是以读写方式打开

另外你代码中只更改了 字符串的 内容

而没有将字符串重新写入文本中去,如果想重新写入文本中,应该在 doc.close() 前加上代码:
doc.write(f)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-17 10:38:48 | 显示全部楼层
原文件
1231231321111222333123321

运行
====== RESTART: C:\Users\lyl\AppData\Local\Programs\Python\Python39\41.py ======
write a name: 123.txt
write you want to remove word: 2
write you want word: u
have 8 in 123.txt
do you want to remove?(y/n): y

改后文件
12312313211112223331233211u31u313u1111uuu3331u33u1


为什么有些地方改了,又有些地方没有改?
很奇怪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-17 10:42:15 | 显示全部楼层
全桥整流 发表于 2021-9-17 10:38
原文件
1231231321111222333123321


确定执行的是这个代码吗?
t = input('write a name: ')
s = input('write you want to remove word: ')
y = input('write you want word: ')
doc=open(t,'r+')
f = doc.read()
k = f.count(s)
print('have %s in %s'%(k,t))
r =input('do you want to remove?(y/n): ')
if r =='y':
    f = f.replace(s,y)
doc.close()
doc = open(t,'w')
doc.write(f)
doc.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-17 10:49:32 | 显示全部楼层
Twilight6 发表于 2021-9-17 10:42
确定执行的是这个代码吗?

对,我刚刚重新建了个文件再执行就没有这样的问题了
但是用回原来的文件还是又问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-17 10:50:39 | 显示全部楼层
本帖最后由 全桥整流 于 2021-9-17 10:54 编辑

我的代码
t = input('write a name: ')
s = input('write you want to remove word: ')
y = input('write you want word: ')
doc=open(t,'r+')
f = doc.read()
k = f.count(s)
print('have %s in %s'%(k,t))
r =input('do you want to remove?(y/n): ')
if r =='y': 
    f = f.replace(s,y)
doc.write(f)
doc.close()
    
    

    
    

你的代码
t = input('write a name: ')
s = input('write you want to remove word: ')
y = input('write you want word: ')
doc=open(t,'r+')
f = doc.read()
k = f.count(s)
print('have %s in %s'%(k,t))
r =input('do you want to remove?(y/n): ')
if r =='y':
    f = f.replace(s,y)
doc.close()
doc = open(t,'w')
doc.write(f)
doc.close()


是我少写了点东西,不好意思。
但是为什么我的代码会只替换一部分?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-17 10:55:52 | 显示全部楼层
’r+‘是读写模式,按道理我写入应该是和’w‘没有区别的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-17 11:33:48 | 显示全部楼层
全桥整流 发表于 2021-9-17 10:55
’r+‘是读写模式,按道理我写入应该是和’w‘没有区别的吧

r+ 会从开头写入,而 w 是先覆盖为空,然后再写入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-17 12:18:32 | 显示全部楼层
Twilight6 发表于 2021-9-17 11:33
r+ 会从开头写入,而 w 是先覆盖为空,然后再写入

那我 'r+' 写入,从开头写入,按道理应该不会出现局部替换吧,应该是从第一个我需要替换的单词开始,一直替换到我最后一个需要替换的单词吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-17 12:19:39 | 显示全部楼层
Twilight6 发表于 2021-9-17 11:33
r+ 会从开头写入,而 w 是先覆盖为空,然后再写入

应该也不是指针的问题,我重新建了个不一样文件,执行最初的程序也是出现一样的错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-18 09:45:32 | 显示全部楼层
我懂了,我的那个是末尾追加,而你的那个是重写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 09:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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