鱼C论坛

 找回密码
 立即注册
查看: 3761|回复: 14

Python基础问题

[复制链接]
发表于 2020-2-28 10:45:35 | 显示全部楼层 |阅读模式

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

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

x
为什么我的文档里有内容,用f.read()读出来的是空的呢,测试了一下发现位置总是变来变去的。
>>> f.read()
''
>>>
>>> f.read()
''
>>> f.read()
''
>>> f.tell()
1434
>>> f.seek(0)
0
>>> f.tell()
0
>>> f.read()
''
>>>
>>> f.tell()
1434
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-28 10:48:06 | 显示全部楼层
因为文件指针移动到了文件末尾,要用 f.seek(0) 将指针移动到文件开头。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 11:01:51 | 显示全部楼层
你的文件指针一直在变,需要用 seek() 方法把指针移动到前面来:

  1. f.seek(0, 0)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 11:16:50 | 显示全部楼层
一个账号 发表于 2020-2-28 11:01
你的文件指针一直在变,需要用 seek() 方法把指针移动到前面来:

嗯是的,但是不知道为什么我找了回来,然后再查看位置的时候又自己变了
>>> f=open('E:\\客服对话.txt')
>>> f.read()
''
>>> f.seek(0,0)
0
>>> f.read()
''
>>> f.tell()
1434
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 11:19:55 | 显示全部楼层
15361130209 发表于 2020-2-28 11:16
嗯是的,但是不知道为什么我找了回来,然后再查看位置的时候又自己变了
>>> f=open('E:\\客服对话.txt') ...

你的文件应该是空的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 11:29:14 | 显示全部楼层
一个账号 发表于 2020-2-28 11:19
你的文件应该是空的

应该不是吧,我有写内容的,不然用f.tell()检测的时候它也应该不会跳到1434这个位置了。好奇怪
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 11:30:17 | 显示全部楼层
一个账号 发表于 2020-2-28 11:01
你的文件指针一直在变,需要用 seek() 方法把指针移动到前面来:

嗯是的,但是不知道为什么我找了回来,然后用tell()查看位置时又位置又变了。
>>> f=open('E:\\客服对话.txt')
>>> f.read()
''
>>> f.seek(0,0)
0
>>> f.read()
''
>>> f.tell()
1434
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 13:41:41 | 显示全部楼层
具体内容是什么,能发来看看吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 16:34:30 | 显示全部楼层
andy大宝 发表于 2020-2-28 13:41
具体内容是什么,能发来看看吗?

就是我想读取E:\\客服对话.txt,里面是有内容的,但就是读不了,下面是我运行了read(),tell(),open(),seek()所出现的结果,有时第一次用read()还会出错,好奇怪。
>>> f=open('E:\\客服对话.txt')
>>> f.read()                                       
Traceback (most recent call last):
  File "<pyshell#84>", line 1, in <module>
    f.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 4: illegal multibyte sequence
>>> f.read()
''
>>> f.tell()
1434
>>> f.seek(0,0,)
0
>>> f.tell()
0
>>> f.read()
Traceback (most recent call last):
  File "<pyshell#89>", line 1, in <module>
    f.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 4: illegal multibyte sequence
>>> f.read()
''
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 16:37:16 | 显示全部楼层
可能是我的电脑的问题吧,我在那新建一个文件夹,然后新建那个可以打开了。谢谢各位老哥了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 18:24:11 | 显示全部楼层
15361130209 发表于 2020-2-28 16:34
就是我想读取E:\\客服对话.txt,里面是有内容的,但就是读不了,下面是我运行了read(),tell(),open(),see ...

你检查一下文件在不在,操作对不对,一般调用read()是不会报错的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 18:44:06 | 显示全部楼层
本帖最后由 hrp 于 2020-2-28 19:43 编辑

文件编码问题,这样打开文件:
  1. f=open('E:\\客服对话.txt', encoding='utf-8')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 18:46:48 | 显示全部楼层
andy大宝 发表于 2020-2-28 18:24
你检查一下文件在不在,操作对不对,一般调用read()是不会报错的

嗯嗯
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 19:27:32 | 显示全部楼层
有人跟你一同操作这个文件会不会造成指针变动?另外你用另外的读取方法试试,比如readline 或 readlines
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-29 20:33:43 | 显示全部楼层
shicui 发表于 2020-2-28 19:27
有人跟你一同操作这个文件会不会造成指针变动?另外你用另外的读取方法试试,比如readline 或 readlines

还是不行,不知道什么原因了。我另建一个文件操作的时候一切正常了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-22 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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