鱼C论坛

 找回密码
 立即注册
查看: 2236|回复: 5

[已解决]35讲作业题

[复制链接]
发表于 2020-3-29 01:06:47 | 显示全部楼层 |阅读模式
2鱼币
本帖最后由 塞利格曼的狗 于 2020-3-29 01:08 编辑

要求:提供一个文件夹浏览框,让用户选择需要打开的文本文件,打开并显示文件内容,当用户点击“OK”按钮的时候,比较当前文件是否修改过,如果修改过,则提示“覆盖保存”、”放弃保存”或“另存为…”并实现相应的功能。
出的一个bug:AttributeError: 'str' object has no attribute 'read'
可能之后还有bug,但是我实在搞不动了,就想请教一下大佬!!

我的代码:
import easygui as g
f1 = g.fileopenbox(default="c:*.txt")
f2 = open('temp.txt','wb')
f3 = open('另存为.txt','wb')
while True:
    info = f1.read()
    if len(info) == 0:
        break
    else:
        f2.write(info)
answer1 = '覆盖保存'
answer2 = '放弃保存'
answer3 = '另存为'
while f1.read != f2.read:
    if answer1 == g.choices(msg = '检测到文本发生变化',choices = ('覆盖保存','放弃保存','另存为')):
        g.filesavebox(default = f1)
    if answer2 == g.choices(msg = '检测到文本发生变化',choices = ('覆盖保存','放弃保存','另存为')):
        g.filesavebox(default = f2)
    if answer3 == g.choices(msg = '检测到文本发生变化',choices = ('覆盖保存','放弃保存','另存为')):
        while True:
            info = f1.read()
            if len(info) == 0:
                break
            else:
                f3.write(info)
        g.filesavebox(default = f3)
f1.close()
f2.close()
f3.close()
最佳答案
2020-3-29 01:06:48
fileopenbox 返回的不是文件对象,只是一个文件名而已

最佳答案

查看完整内容

fileopenbox 返回的不是文件对象,只是一个文件名而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 01:06:48 | 显示全部楼层    本楼为最佳答案   
fileopenbox 返回的不是文件对象,只是一个文件名而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 10:09:10 | 显示全部楼层
本帖最后由 酒醉三分醒 于 2020-3-29 10:31 编辑

报错原因是f1只是文件的路径字符串,不能用read。
可以改成
file_path = g.fileopenbox(default="c:*.txt")
f1 = open(file_path)

下面的f2打开模式用w就可以了,wb是二进制写入模式,除非你打开文件里面的内容是二进制的,否则写不进去。
f3没必要一开始就创建,可以在用户选择“另存为”之后再创建,然后写入内容。
info = f1.read()
这里读取指针已经到达末尾,注意一下,后面再调用f1.read()是返回空字符串

你中间还缺失一段代码,需要增加g.textbox弹出框让用户看到文本,不然怎么修改?

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

使用道具 举报

 楼主| 发表于 2020-3-29 10:39:02 | 显示全部楼层
BngThea 发表于 2020-3-29 08:06
fileopenbox 返回的不是文件对象,只是一个文件名而已

谢谢!这是其中一个问题。。。
我的问题太多了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-29 10:39:54 | 显示全部楼层
酒醉三分醒 发表于 2020-3-29 10:09
报错原因是f1只是文件的路径字符串,不能用read。
可以改成

谢谢谢谢!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-29 10:41:45 | 显示全部楼层
酒醉三分醒 发表于 2020-3-29 10:09
报错原因是f1只是文件的路径字符串,不能用read。
可以改成

我重新稍微改了一下,还是有问题,我再发一个悬赏给你补上!
要是可以的话,在帮我康康!!
谢谢大佬!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 03:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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