鱼C论坛

 找回密码
 立即注册
查看: 2403|回复: 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-6 23:07:51 | 显示全部楼层
open不写打开方式默认是只读
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

所以第二行应该怎么改啊?大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

另外建议拷贝代码发问题,这样可以直接帮你更改代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

另外建议拷 ...

不行,一'w'写入,之前的东西就没了,我需要替换,而不是直接输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

是重新写一个 open ,不是在第一个上直接改成 w
想知道小甲鱼最近在做啥?请访问 -> 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

重新写,怎么写?大佬可以说的明白一些吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

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

ci = a.count(x)

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

result = open(wen, 'w', encoding='utf-8')
result.write(a)

点评

函数最后忘记关闭文件对象了,记得加上 result.close()  发表于 2021-6-6 23:28
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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



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

最后将替换后的字符串重新 open 写入原先的文件,因为 w 模式打开会覆盖原文件,所以直接写入即是替换后的文本内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可是大佬,这样写文件就没有了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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




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

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

使用道具 举报

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

可以了,谢谢大佬!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


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


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


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


def main():
    file = input('请输入文件名:')
    oldwd = input('请输入要替换的单词:')
    newwd = input('请输入新的单词:')
    ckfile(file)
    temp_str = FileToStr(file)
    on = re.findall(oldwd, temp_str)
    if on:
        print(f'{file}中共有{len(on)}个{oldwd}。')
        ry = input('是否替换?Y/N:')
        if ry in ['y', 'Y']:
            result = re.sub(oldwd, newwd, temp_str)
            StrToFile(result, file)
            print('替换完成!')
        else:
            print('已取消替换!')
    else:
        print(f'{file}没有{oldwd}这个词。')
        exit(1)


if __name__ == "__main__":
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 12:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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