丿autistic 发表于 2020-6-24 17:48:48

Python中EasyGui文件保存问题

课后作业035讲动动手35题,为什么我这样写,选择另存为的时候文件保存不了?{:5_104:}
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'])

Twilight6 发表于 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()

丿autistic 发表于 2020-6-24 18:02:56

Twilight6 发表于 2020-6-24 17:54


想请教一下,filesavebox()函数是只返回保存的文件名吗?我之前的代码连保存的文件都没有。。

Twilight6 发表于 2020-6-24 18:04:17

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

filesavebox() 返回的是一个完整的路径

丿autistic 发表于 2020-6-24 18:12:18

Twilight6 发表于 2020-6-24 18:04
filesavebox() 返回的是一个完整的路径

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

Twilight6 发表于 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 写入模式打开 就可以在你选定的地方写入文件了,也就算保存吧~

我帮你改过代码了,那个就可以正常使用

丿autistic 发表于 2020-6-24 19:07:52

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

所以意思就是filesavebox() 只是单纯返回一个路径名称,文件保存的话还是要配合open来完成。
谢谢你{:5_110:}

Twilight6 发表于 2020-6-24 19:27:02

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

嗯 是的客气~~
页: [1]
查看完整版本: Python中EasyGui文件保存问题