鱼C论坛

 找回密码
 立即注册
查看: 2742|回复: 15

[已解决]关于打开方式

[复制链接]
发表于 2021-6-6 22:59:19 | 显示全部楼层 |阅读模式

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

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

x
大佬们,我知道第二行有问题,请问怎么改?
最佳答案
2021-6-6 23:29:30
正天圣人 发表于 2021-6-6 23:28
可是大佬,这样写文件就没有了




我代码最后忘记关闭文件对象了,加上 result.close()

第二十九讲009.PNG
第二十九讲008.PNG
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-6 23:07:51 | 显示全部楼层
open不写打开方式默认是只读
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-6 23:08:57 | 显示全部楼层
suchocolate 发表于 2021-6-6 23:07
open不写打开方式默认是只读

所以第二行应该怎么改啊?大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-6 23:14:05 | 显示全部楼层

你可以重新打开一次文件,以 'w' 模式覆盖之前的文件,并且将替换后的字符写入该文件即可

另外建议拷贝代码发问题,这样可以直接帮你更改代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-6 23:15:25 | 显示全部楼层
Twilight6 发表于 2021-6-6 23:14
你可以重新打开一次文件,以 'w' 模式覆盖之前的文件,并且将替换后的字符写入该文件即可

另外建议拷 ...

不行,一'w'写入,之前的东西就没了,我需要替换,而不是直接输入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-6 23:16:35 | 显示全部楼层
正天圣人 发表于 2021-6-6 23:15
不行,一'w'写入,之前的东西就没了,我需要替换,而不是直接输入


你把你的代码发上来,我叙述的感觉你并没有理解

是重新写一个 open ,不是在第一个上直接改成 w
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-6 23:18:29 | 显示全部楼层
Twilight6 发表于 2021-6-6 23:16
你把你的代码发上来,我叙述的感觉你并没有理解

是重新写一个 open ,不是在第一个上直接改成 w

wen=input('请输入文件名')
a=open(wen,encoding='utf-8')
b=a.read()
ci=0
ci1=0
b=str(b)
x=input('请输入需要替换的单词或字符:')
y=input('请输入新的单词或字符:')
for i in b:
    if i==x:
        ci=ci+1
print('\n文件%s中共有%d个【%s】' % (wen,ci,x))
print('您确定要把所有的【%s】替换为【%s】吗?' % (x,y))
z=input('【YES/NO】')
if z=='yes':
    for i in b:
        if i==x:
            y=b[ci]
        ci=ci+1
a.writelines(b)
print(a)
a.close()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-6 23:19:27 | 显示全部楼层
Twilight6 发表于 2021-6-6 23:16
你把你的代码发上来,我叙述的感觉你并没有理解

是重新写一个 open ,不是在第一个上直接改成 w

重新写,怎么写?大佬可以说的明白一些吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-6 23:24:49 | 显示全部楼层
正天圣人 发表于 2021-6-6 23:19
重新写,怎么写?大佬可以说的明白一些吗?


  1. wen = input('请输入文件名')
  2. a = open(wen, encoding='utf-8').read()

  3. x = input('请输入需要替换的单词或字符:')
  4. y = input('请输入新的单词或字符:')

  5. ci = a.count(x)

  6. print('\n文件%s中共有%d个【%s】' % (wen, ci, x))
  7. print('您确定要把所有的【%s】替换为【%s】吗?' % (x, y))
  8. z = input('【YES/NO】')
  9. if z == 'yes' or z == 'YES':
  10.     a = a.replace(x,y)

  11. result = open(wen, 'w', encoding='utf-8')
  12. result.write(a)
复制代码

点评

函数最后忘记关闭文件对象了,记得加上 result.close()  发表于 2021-6-6 23:28
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-6 23:26:51 | 显示全部楼层
正天圣人 发表于 2021-6-6 23:19
重新写,怎么写?大佬可以说的明白一些吗?



计数直接用 count 函数,替换直接用 replace 函数

最后将替换后的字符串重新 open 写入原先的文件,因为 w 模式打开会覆盖原文件,所以直接写入即是替换后的文本内容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-6 23:28:34 | 显示全部楼层

可是大佬,这样写文件就没有了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-6 23:29:30 | 显示全部楼层    本楼为最佳答案   
正天圣人 发表于 2021-6-6 23:28
可是大佬,这样写文件就没有了




我代码最后忘记关闭文件对象了,加上 result.close()

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

使用道具 举报

 楼主| 发表于 2021-6-6 23:33:47 | 显示全部楼层
Twilight6 发表于 2021-6-6 23:29
我代码最后忘记关闭文件对象了,加上 result.close()

可以了,谢谢大佬!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-6 23:35:08 | 显示全部楼层
给你个参考,文本替换还是用re方面。
  1. import re
  2. import os


  3. def ckfile(file):
  4.     if os.path.exists(file):
  5.         return True
  6.     else:
  7.         print(f'{file}不存在!')
  8.         exit(1)


  9. def FileToStr(file):
  10.     with open(file, encoding='utf-8') as f:
  11.         return f.read()


  12. def StrToFile(str, file):
  13.     with open(file, 'w', encoding='utf-8') as f:
  14.         f.write(str)


  15. def main():
  16.     file = input('请输入文件名:')
  17.     oldwd = input('请输入要替换的单词:')
  18.     newwd = input('请输入新的单词:')
  19.     ckfile(file)
  20.     temp_str = FileToStr(file)
  21.     on = re.findall(oldwd, temp_str)
  22.     if on:
  23.         print(f'{file}中共有{len(on)}个{oldwd}。')
  24.         ry = input('是否替换?Y/N:')
  25.         if ry in ['y', 'Y']:
  26.             result = re.sub(oldwd, newwd, temp_str)
  27.             StrToFile(result, file)
  28.             print('替换完成!')
  29.         else:
  30.             print('已取消替换!')
  31.     else:
  32.         print(f'{file}没有{oldwd}这个词。')
  33.         exit(1)


  34. if __name__ == "__main__":
  35.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-6 23:36:55 | 显示全部楼层
suchocolate 发表于 2021-6-6 23:35
给你个参考,文本替换还是用re方面。

好的,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 01:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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