鱼C论坛

 找回密码
 立即注册
查看: 2013|回复: 3

[已解决]自己写了一个读取文本文件的代码,有几个问题不是很明白

[复制链接]
发表于 2017-3-8 21:29:25 | 显示全部楼层 |阅读模式

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

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

x
  1. import easygui as g
  2. import os

  3. file_path=g.fileopenbox(msg='请选择一个文本文件',title='浏览文件夹',filetypes=['*.txt'])
  4. (f_path,f_name)=os.path.split(file_path)

  5. f=open(file_path)
  6. print(list(f))
  7. a=g.textbox(msg='文件【'+f_name+'】的内容如下=',title='显示文件内容',text=f,codebox=0)#为什么打开文本显示框什么东西都没有?
  8. print(list(f))#为什么这次打印为空?
复制代码



自己写了一个读取文本文件的代码,有几个问题不是很明白,已经在程序中标注,还望各位高手能做下解答
最佳答案
2017-3-9 09:59:26
楼主你这个问题应该是你在上面打印过一次,然后就把指针移到最后了。
可以用一个
f.seek(0)来将文件指针重置。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-8 21:44:14 | 显示全部楼层
本帖最后由 591821661 于 2017-3-8 21:45 编辑
  1. import easygui as g
  2. import os

  3. file_path=g.fileopenbox(msg='请选择一个文本文件',title='浏览文件夹',filetypes=['*.txt'])
  4. (f_path,f_name)=os.path.split(file_path)

  5. with open(file_path) as f:
  6.     ftext = f.read()

  7. print(ftext)
  8. a=g.textbox(msg='文件【'+f_name+'】的内容如下=',title='显示文件内容',text=ftext,codebox=0)#为什么打开文本显示框什么东西都没有?
  9. #print(list(ftext))#为什么这次打印为空?
复制代码

以上代码可以实现,我测试了一下,是你f open了一个东西但是没有f.close()的问题,还有你要获取文件中的内容要f.read(),with as 语句可已免去f.close() 的麻烦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-8 22:32:03 | 显示全部楼层
591821661 发表于 2017-3-8 21:44
以上代码可以实现,我测试了一下,是你f open了一个东西但是没有f.close()的问题,还有你要获取文件中的 ...

f.close是我忘记写了,但是好像影响不大,我测试了几次发现是因为指针的问题,调用了
  1. print(list(f))
复制代码
以及
  1. a=g.textbox(msg='文件【'+f_name+'】的内容如下=',title='显示文件内容',text=f,codebox=0)
复制代码

指针会从f文本的开始移到末端,此时需要将这个指针进行重置,下面是我修改过的

  1. import easygui as g
  2. import os

  3. file_path=g.fileopenbox(msg='请选择一个文本文件',title='浏览文件夹',filetypes=['*.txt'])
  4. (f_path,f_name)=os.path.split(file_path)

  5. f=open(file_path)
  6. print(list(f))
  7. f.seek(0,0)#这句删掉下面的文本框打印为空
  8. a=g.textbox(msg='文件【'+f_name+'】的内容如下=',title='显示文件内容',text=f,codebox=0)
  9. f.seek(0,0)#这句删掉下面打印为空
  10. print(list(f))
  11. f.close
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-9 09:59:26 | 显示全部楼层    本楼为最佳答案   
楼主你这个问题应该是你在上面打印过一次,然后就把指针移到最后了。
可以用一个
f.seek(0)来将文件指针重置。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 14:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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