鱼C论坛

 找回密码
 立即注册
查看: 2354|回复: 7

[已解决]Python中EasyGui文件保存问题

[复制链接]
发表于 2020-6-24 17:48:48 | 显示全部楼层 |阅读模式

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

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

x
课后作业035讲动动手35题,为什么我这样写,选择另存为的时候文件保存不了?
import os
import easygui as g

file_name = input('请输入你需要打开文件的地址:')
f = open(file_name, 'r+')
neirong = f.read()
f.close()
name = os.path.basename(file_name)
msg = '文件【%s】的内容如下:' % name
f1 = g.textbox(msg, title='显示文件内容', text=neirong)
if f1 != neirong:
    msg = '检测到文件内容发生改变,请选择以下操作:'
    choose = g.buttonbox(msg, title='', choices=['覆盖保存', '放弃保存', '另存为'])
    if choose == '覆盖保存':
        f = open(file_name, 'w')
        f.write(f1)
        f.close()
    elif choose == '放弃保存':
        pass
    elif choose == '另存为':
        g.filesavebox(title='另存为', default='.txt', filetypes=['*.txt'])
最佳答案
2020-6-24 17:54:25
import os
import easygui as g

file_name = input('请输入你需要打开文件的地址:')
f = open(file_name, 'r+')
neirong = f.read()
f.close()
name = os.path.basename(file_name)
msg = '文件【%s】的内容如下:' % name
f1 = g.textbox(msg, title='显示文件内容', text=neirong)
if f1 != neirong:
    msg = '检测到文件内容发生改变,请选择以下操作:'
    choose = g.buttonbox(msg, title='', choices=['覆盖保存', '放弃保存', '另存为'])
    if choose == '覆盖保存':
        f = open(file_name, 'w')
        f.write(f1)
        f.close()
    elif choose == '放弃保存':
        pass
    elif choose == '另存为':
        file = g.filesavebox(title='另存为', default='.txt', filetypes=['*.txt'])
        f = open(file, 'w')
        f.write(f1)
        f.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-24 17:54:25 | 显示全部楼层    本楼为最佳答案   
import os
import easygui as g

file_name = input('请输入你需要打开文件的地址:')
f = open(file_name, 'r+')
neirong = f.read()
f.close()
name = os.path.basename(file_name)
msg = '文件【%s】的内容如下:' % name
f1 = g.textbox(msg, title='显示文件内容', text=neirong)
if f1 != neirong:
    msg = '检测到文件内容发生改变,请选择以下操作:'
    choose = g.buttonbox(msg, title='', choices=['覆盖保存', '放弃保存', '另存为'])
    if choose == '覆盖保存':
        f = open(file_name, 'w')
        f.write(f1)
        f.close()
    elif choose == '放弃保存':
        pass
    elif choose == '另存为':
        file = g.filesavebox(title='另存为', default='.txt', filetypes=['*.txt'])
        f = open(file, 'w')
        f.write(f1)
        f.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-24 18:02:56 | 显示全部楼层

想请教一下,filesavebox()函数是只返回保存的文件名吗?我之前的代码连保存的文件都没有。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-24 18:04:17 | 显示全部楼层
丿autistic 发表于 2020-6-24 18:02
想请教一下,filesavebox()函数是只返回保存的文件名吗?我之前的代码连保存的文件都没有。。

filesavebox() 返回的是一个完整的路径
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-24 18:12:18 | 显示全部楼层
Twilight6 发表于 2020-6-24 18:04
filesavebox() 返回的是一个完整的路径

但是如果路径中有文件名的话,应该会有对应的文件产生吧?就像  f = open('test.txt', ‘w’) 在路径中没有test文件时会新建一个test。txt文件
我就是不知道为什么连对应的文件都没有。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-24 18:19:17 | 显示全部楼层
本帖最后由 Twilight6 于 2020-6-24 18:34 编辑
丿autistic 发表于 2020-6-24 18:12
但是如果路径中有文件名的话,应该会有对应的文件产生吧?就像  f = open('test.txt', ‘w’) 在路径中没 ...


f = open(r'test.txt','w')
实际上是自动帮你加上了当前工作目录的路径,虽然你这里填的是文件名 实际上Python 自动帮你加上了当前工作环境的路径在 test.txt 前

比如我的这个代码的路径是 C:\t\t.py ,那么正常情况工作路径就为 C:\t    当你 f = open(r'test.txt', 'w') Python 自动帮你加上了路径 f = open(r'C:\t\test.txt', 'w')

但是如果路径中有文件名的话,应该会有对应的文件产生吧?就像  f = open('test.txt', ‘w’) 在路径中没有test文件时会新建一个test。txt文件
我就是不知道为什么连对应的文件都没有。。


filesavebox() 返回的是一个路径,而且会自动加上你在 filesavebox() 那输入框内输入的文件名

配合 open 以 w 写入模式打开 就可以在你选定的地方写入文件了,也就算保存吧~

我帮你改过代码了,那个就可以正常使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-24 19:07:52 | 显示全部楼层
Twilight6 发表于 2020-6-24 18:19
f = open(r'test.txt','w')
实际上是自动帮你加上了当前工作目录的路径,虽然你这里填的是文件名 实 ...

所以意思就是filesavebox() 只是单纯返回一个路径名称,文件保存的话还是要配合open来完成。
谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-24 19:27:02 | 显示全部楼层
丿autistic 发表于 2020-6-24 19:07
所以意思就是filesavebox() 只是单纯返回一个路径名称,文件保存的话还是要配合open来完成。
谢谢你{:5_ ...


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 12:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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