鱼C论坛

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

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

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

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

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

x

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

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

  19.     if choice == '另存为..':
  20.         title=g.enterbox(msg='', title='请输入新的文件名: ', default='', strip=True, image=None, root=None)
  21.         final_tltle_foddle=title+'.txt'
  22.         code=[]
  23.         for each_line in file_new:
  24.             code.append(each_line)
  25.         final_file=open(final_tltle_foddle,'w+')
  26.         final_file.writelines(code)
  27.         final_file.close()
复制代码

        

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

问题解决了,就结了帖子,把最佳答案设了吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-5 20:28:36 | 显示全部楼层
这样试试:

  1. # 提供一个文件夹浏览框,让用户选择需要打开的文本文件,打开并显示文件内容
  2. import easygui as g

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

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

  21.     if choice == '另存为..':
  22.         title = g.enterbox(msg='', title='请输入新的文件名: ', default='', strip=True, image=None, root=None)
  23.         final_tltle_foddle = title + '.txt'
  24.         code = []
  25.         for each_line in file_new:
  26.             code.append(each_line)
  27.         final_file = open(final_tltle_foddle, 'w+')
  28.         final_file.writelines(code)
  29.         final_file.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 20:29:01 | 显示全部楼层
你已经打开一遍文件了,为什么还要打开一次?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

file.name啥意思
在我的这一句打开前面我把文件关了,所以又开了一次,我再打开一次是为了避免打开之后没有关闭,写不进去,(瞎猜的)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

1,上面代码不是我写的
2,你也没关闭呀,我没看见file.close()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

file.name啥意思
小甲鱼最新课程 -> https://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')
关了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

关闭了那个文件对象应该还存在,你打印一下试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

而且你打开的应该是一个文件名吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

应该是文件对象的一个属性,用于返回打开文件对象的名字
  1. >>> import os
  2. >>> os.chdir("D:\")
  3. >>> f = open("pip常用源.txt")
  4. >>> f.name
  5. 'pip常用源.txt'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

您还在吗,我改了之后就对了,请问这的file.name是实现什么功能呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我不是回复你了吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 20:52:07 | 显示全部楼层
file.name 是获取文件对象的名字
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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


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

  10. print(code)      
  11. final_tltle_foddle=title+'.txt'
  12. final_tltle=open(final_tltle_foddle,'w+')
  13. final_tltle.writelines(code)
  14. final_tltle.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

final_tltle_foddle是一个字符串呀,
open是支持引用变量打开的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

啊哦哦,鼠标坏了,手动快了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

问题解决了,就结了帖子,把最佳答案设了吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 05:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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