鱼C论坛

 找回密码
 立即注册
查看: 1102|回复: 17

[已解决]35讲,choice==文件覆盖的情况报错

[复制链接]
发表于 2020-4-5 20:21:50 | 显示全部楼层 |阅读模式

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

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

x
#提供一个文件夹浏览框,让用户选择需要打开的文本文件,打开并显示文件内容
import easygui as g
#找到相应的文件并显示文件路径
me=g.fileopenbox(msg='文件【record】的内容如下', title='显示文件内容', default='*', filetypes=None, multiple=False)
file=open(me,'r+')
file_new=g.textbox(msg='文件【record】的内容如下', title='显示文件内容', text=file, codebox=False, callback=None, run=True)
if file_new != file :                   #文件可以直接相比
    choice=g.buttonbox(msg='', title='文件已经被修改,请选择以下操作: ', choices=('覆盖保存','放弃保存', '另存为..'), image=None, images=None, default_choice=None, cancel_choice=None, callback=None, run=True)
    if choice == '覆盖保存':
        code=[]
        for each_line in file_new:
            code.append(each_line)
        file.close()
        file_new_1=open(file,'w')
        file_new_1.writelines(code)
        file_new_1.close()

    if choice == '放弃保存':
        file.close()

    if choice == '另存为..':
        title=g.enterbox(msg='', title='请输入新的文件名: ', default='', strip=True, image=None, root=None)
        final_tltle_foddle=title+'.txt'
        code=[]
        for each_line in file_new:
            code.append(each_line)
        final_file=open(final_tltle_foddle,'w+')
        final_file.writelines(code)
        final_file.close()
        

最佳答案
2020-4-5 20:58:15
猪猪虾 发表于 2020-4-5 20:56
啊哦哦,鼠标坏了,手动快了,谢谢

问题解决了,就结了帖子,把最佳答案设了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-5 20:28:36 | 显示全部楼层
这样试试:
# 提供一个文件夹浏览框,让用户选择需要打开的文本文件,打开并显示文件内容
import easygui as g

# 找到相应的文件并显示文件路径
me = g.fileopenbox(msg='文件【record】的内容如下', title='显示文件内容', default='*', filetypes=None, multiple=False)
file = open(me, 'r+')
file_new = g.textbox(msg='文件【record】的内容如下', title='显示文件内容', text=file, codebox=False,
                     callback=None, run=True)
if file_new != file:  # 文件可以直接相比
    choice = g.buttonbox(msg='', title='文件已经被修改,请选择以下操作: ', choices=('覆盖保存', '放弃保存', '另存为..'), image=None, images=None,
                         cancel_choice=None, callback=None, run=True)
    if choice == '覆盖保存':
        code = []
        for each_line in file_new:
            code.append(each_line)
        file.close()
        file_new_1 = open(file.name, 'w')
        file_new_1.writelines(code)
        file_new_1.close()

    if choice == '放弃保存':
        file.close()

    if choice == '另存为..':
        title = g.enterbox(msg='', title='请输入新的文件名: ', default='', strip=True, image=None, root=None)
        final_tltle_foddle = title + '.txt'
        code = []
        for each_line in file_new:
            code.append(each_line)
        final_file = open(final_tltle_foddle, 'w+')
        final_file.writelines(code)
        final_file.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 20:29:01 | 显示全部楼层
你已经打开一遍文件了,为什么还要打开一次?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 20:35:07 | 显示全部楼层
qiuyouzhi 发表于 2020-4-5 20:29
你已经打开一遍文件了,为什么还要打开一次?

file.name啥意思
在我的这一句打开前面我把文件关了,所以又开了一次,我再打开一次是为了避免打开之后没有关闭,写不进去,(瞎猜的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 20:36:37 | 显示全部楼层
猪猪虾 发表于 2020-4-5 20:35
file.name啥意思
在我的这一句打开前面我把文件关了,所以又开了一次,我再打开一次是为了避免打开之后 ...

1,上面代码不是我写的
2,你也没关闭呀,我没看见file.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 20:38:17 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2020-4-5 20:39:16 | 显示全部楼层
qiuyouzhi 发表于 2020-4-5 20:36
1,上面代码不是我写的
2,你也没关闭呀,我没看见file.close()

file.close()
file_new_1=open(file,'w')
关了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 20:40:11 | 显示全部楼层
猪猪虾 发表于 2020-4-5 20:39
file.close()
file_new_1=open(file,'w')
关了

关闭了那个文件对象应该还存在,你打印一下试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 20:41:06 | 显示全部楼层
猪猪虾 发表于 2020-4-5 20:39
file.close()
file_new_1=open(file,'w')
关了

而且你打开的应该是一个文件名吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 20:44:52 | 显示全部楼层
qiuyouzhi 发表于 2020-4-5 20:41
而且你打开的应该是一个文件名吧

这样是可以的,我之前向文件里面写入东西的时候,也是这样的
刚才那个人回复的file.name,我改了之后就对了,你知道这是啥意思吗,实现什么功能呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 20:46:18 | 显示全部楼层
猪猪虾 发表于 2020-4-5 20:44
这样是可以的,我之前向文件里面写入东西的时候,也是这样的
刚才那个人回复的file.name,我改了之后就 ...

应该是文件对象的一个属性,用于返回打开文件对象的名字
>>> import os
>>> os.chdir("D:\")
>>> f = open("pip常用源.txt")
>>> f.name
'pip常用源.txt'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 20:46:38 | 显示全部楼层

您还在吗,我改了之后就对了,请问这的file.name是实现什么功能呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 20:50:20 | 显示全部楼层
猪猪虾 发表于 2020-4-5 20:46
您还在吗,我改了之后就对了,请问这的file.name是实现什么功能呢

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

使用道具 举报

发表于 2020-4-5 20:52:07 | 显示全部楼层
file.name 是获取文件对象的名字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-5 20:53:33 | 显示全部楼层
qiuyouzhi 发表于 2020-4-5 20:46
应该是文件对象的一个属性,用于返回打开文件对象的名字


那我的这个又为什么可以实现相应的功能呢,13句
#编写一个程序,接受用户的输入并保存为新的文件,程序实现如图:
title=input('请输入文件名:')
code=[]
message=''
while message != ':w':
   message=input('请输入内容【单独输入‘:w’保存退出】:')
   if message !=  ':w':
      code.append(message)
      code.append(' \r\n')

print(code)      
final_tltle_foddle=title+'.txt'
final_tltle=open(final_tltle_foddle,'w+')
final_tltle.writelines(code)
final_tltle.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 20:55:27 | 显示全部楼层
猪猪虾 发表于 2020-4-5 20:53
那我的这个又为什么可以实现相应的功能呢,13句

final_tltle_foddle是一个字符串呀,
open是支持引用变量打开的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 20:56:05 | 显示全部楼层
qiuyouzhi 发表于 2020-4-5 20:50
我不是回复你了吗?

啊哦哦,鼠标坏了,手动快了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 20:58:15 | 显示全部楼层    本楼为最佳答案   
猪猪虾 发表于 2020-4-5 20:56
啊哦哦,鼠标坏了,手动快了,谢谢

问题解决了,就结了帖子,把最佳答案设了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 00:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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