小甲鱼课后作业29动动手4
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()
为什么没有效果,改完文件没有变化?
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
欸啊,改代码改到快疯了 全桥整流 发表于 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()
Twilight6 发表于 2021-9-17 10:25
你打开方式是 'w' 写入打开,当然不能读取~
但是我读取就不能写入了,写入又不能读取,是不是要分两步? 全桥整流 发表于 2021-9-17 10:27
但是我读取就不能写入了,写入又不能读取,是不是要分两步?
r+ 是以读写方式打开
另外你代码中只更改了 字符串的 内容
而没有将字符串重新写入文本中去,如果想重新写入文本中,应该在 doc.close() 前加上代码:
doc.write(f) 原文件
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
为什么有些地方改了,又有些地方没有改?
很奇怪 全桥整流 发表于 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() Twilight6 发表于 2021-9-17 10:42
确定执行的是这个代码吗?
对,我刚刚重新建了个文件再执行就没有这样的问题了
但是用回原来的文件还是又问题 本帖最后由 全桥整流 于 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()
是我少写了点东西,不好意思。
但是为什么我的代码会只替换一部分? ’r+‘是读写模式,按道理我写入应该是和’w‘没有区别的吧 全桥整流 发表于 2021-9-17 10:55
’r+‘是读写模式,按道理我写入应该是和’w‘没有区别的吧
r+ 会从开头写入,而 w 是先覆盖为空,然后再写入 Twilight6 发表于 2021-9-17 11:33
r+ 会从开头写入,而 w 是先覆盖为空,然后再写入
那我 'r+' 写入,从开头写入,按道理应该不会出现局部替换吧,应该是从第一个我需要替换的单词开始,一直替换到我最后一个需要替换的单词吧 Twilight6 发表于 2021-9-17 11:33
r+ 会从开头写入,而 w 是先覆盖为空,然后再写入
应该也不是指针的问题,我重新建了个不一样文件,执行最初的程序也是出现一样的错误
我懂了,我的那个是末尾追加,而你的那个是重写
页:
[1]