鱼C论坛

 找回密码
 立即注册
查看: 1361|回复: 2

[已解决]第35讲easygui作业的问题

[复制链接]
发表于 2020-7-4 09:36:53 | 显示全部楼层 |阅读模式

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

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

x
第35讲的作业,我的代码是这样的
import easygui as g
import os

filename = g.fileopenbox(default="*.txt")
title = os.path.basename(filename)

if filename != None:
    f = open(filename,encoding='utf-8')
    text = f.read()
    text_after = g.textbox('【%s】的内容是:' % title, '显示文件内容',text)
    f.close()

if text != text_after[:-1]:
    choice = g.buttonbox('文件内容有变化,请选择以下操作:','警告',('覆盖保存','放弃保存','另存为'))
    if choice == '覆盖保存':
        f = open(filename,'w',encoding='utf-8')
        f.write(text_after[:-1])
        f.close
    if choice == '放弃保存':
        pass
    if choice =='另存为':
        new_file = g.fileopenbox(default="*.txt")
        if os.path.splitext(new_file)[1] != '.txt':
            new_file += '.txt'
        f = open(new_file,'w+')
        f.write(text_after[:-1])
        f.close
不明白为什么覆盖保存或另存为都写不进去,也就是文件是空的?小甲鱼的为啥就写的进去?有啥不一样啊。另外pass是啥意思,忘记了哪一讲讲的。
最佳答案
2020-7-4 09:38:09
本帖最后由 Twilight6 于 2020-7-4 09:57 编辑



f.close 都忘记加括号了 文件没正常关闭

还有最新版本的 easygui 现在不会在关闭 text 组件时候自动添加个 换行符了 把 if text != text_after[:-1] 改成 if text != text_after

最后另存为 你组件用成了 fileopenbox 应该改成 filesavebox ,还有写入文件可以直接单纯加个 w 即可,不用 w+,而且忘记加上编码了哈最后个open,pass 就是个占位符

完整代码:
import easygui as g
import os

filename = g.fileopenbox(default="*.txt")
title = os.path.basename(filename)

if filename != None:
    f = open(filename,encoding='utf-8')
    text = f.read()
    text_after = g.textbox('【%s】的内容是:' % title, '显示文件内容',text)
    f.close()

if text != text_after:
    choice = g.buttonbox('文件内容有变化,请选择以下操作:','警告',('覆盖保存','放弃保存','另存为'))
    if choice == '覆盖保存':
        f = open(filename,'w',encoding='utf-8')
        f.write(text_after)
        f.close()
    if choice == '放弃保存':
        pass
    if choice =='另存为':
        new_file = g.filesavebox(default="*.txt")
        if os.path.splitext(new_file)[1] != '.txt':
            new_file += '.txt'
        f = open(new_file,'w',encoding='utf-8')
        f.write(text_after)
        f.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-4 09:38:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-7-4 09:57 编辑



f.close 都忘记加括号了 文件没正常关闭

还有最新版本的 easygui 现在不会在关闭 text 组件时候自动添加个 换行符了 把 if text != text_after[:-1] 改成 if text != text_after

最后另存为 你组件用成了 fileopenbox 应该改成 filesavebox ,还有写入文件可以直接单纯加个 w 即可,不用 w+,而且忘记加上编码了哈最后个open,pass 就是个占位符

完整代码:
import easygui as g
import os

filename = g.fileopenbox(default="*.txt")
title = os.path.basename(filename)

if filename != None:
    f = open(filename,encoding='utf-8')
    text = f.read()
    text_after = g.textbox('【%s】的内容是:' % title, '显示文件内容',text)
    f.close()

if text != text_after:
    choice = g.buttonbox('文件内容有变化,请选择以下操作:','警告',('覆盖保存','放弃保存','另存为'))
    if choice == '覆盖保存':
        f = open(filename,'w',encoding='utf-8')
        f.write(text_after)
        f.close()
    if choice == '放弃保存':
        pass
    if choice =='另存为':
        new_file = g.filesavebox(default="*.txt")
        if os.path.splitext(new_file)[1] != '.txt':
            new_file += '.txt'
        f = open(new_file,'w',encoding='utf-8')
        f.write(text_after)
        f.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-4 09:39:17 | 显示全部楼层
pass 就是空语句,占位符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 03:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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