鱼C论坛

 找回密码
 立即注册
查看: 2761|回复: 18

[已解决]文件的读取并输出

[复制链接]
发表于 2021-4-28 13:13:59 | 显示全部楼层 |阅读模式

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

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

x
file=open('one1.txt','rb')
file.seek(2)
print(file.readlines())

file.close()


one1.txt是:
中国
美丽
地广

执行完程序输出这样的结果,都是十六进制的吧,为啥呀?怎样才能输出原来文件的内容啊?
[b'\xbf\xe4\xb8\xad\xe5\x9b\xbd\r\n', b'\xe7\xbe\x8e\xe4\xb8\xbd\r\n', b'\xe5\x9c\xb0\xe5\xb9\xbf']
最佳答案
2021-4-28 14:26:32
江湖散人 发表于 2021-4-28 14:21
['%ufeff中国\n', '美丽\n', '地广']
去掉后就是这样的结果,前边还多了几个字母。咋去掉嗯?
这个程序 ...

练习seek看这个:https://www.runoob.com/python3/python3-file-seek.html
你这标题大家以为你在练习读取文本文件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-28 13:21:48 | 显示全部楼层
open 参数2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-28 13:28:47 | 显示全部楼层
不是六进制,是二进制
你的打开方式是'rb' 其中'r'指的是read 读取,'b'指的是bin 二进制
这里修改成
file=open('one1.txt','r')
file.seek(2)
print(file.readlines())

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

使用道具 举报

 楼主| 发表于 2021-4-28 13:34:40 | 显示全部楼层
逃兵 发表于 2021-4-28 13:28
不是六进制,是二进制
你的打开方式是'rb' 其中'r'指的是read 读取,'b'指的是bin 二进制
这里修改成

Traceback (most recent call last):
  File "D:/Python/newjobbeginning/chap15/demon4.py", line 19, in <module>
    print(file.readlines())
UnicodeDecodeError: 'gbk' codec can't decode byte 0xbd in position 6: illegal multibyte sequence
修改后直接报错了,啥原因啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-28 13:37:12 | 显示全部楼层
文本不用b,encoding修改默认编码方式,
file=open('one1.txt','r', encoding='utf-8')
print(file.readlines())
file.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 13:42:48 | 显示全部楼层
suchocolate 发表于 2021-4-28 13:37
文本不用b,encoding修改默认编码方式,

Traceback (most recent call last):
  File "D:/Python/newjobbeginning/chap15/demon4.py", line 19, in <module>
    print(file.readlines())
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 0: invalid start byte
修改后,报错了,什么原因啊 ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 13:44:28 | 显示全部楼层

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

使用道具 举报

发表于 2021-4-28 13:44:59 | 显示全部楼层
江湖散人 发表于 2021-4-28 13:42
Traceback (most recent call last):
  File "D:/Python/newjobbeginning/chap15/demon4.py", line 19,  ...

你的txt什么编码格式,用记事本打开看看右下角有标识的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-28 13:45:10 | 显示全部楼层
江湖散人 发表于 2021-4-28 13:34
Traceback (most recent call last):
  File "D:/Python/newjobbeginning/chap15/demon4.py", line 19,  ...


文本编码问题
这里涉及open函数的encoding编码参数
默认使用'gbk'解码
报错内容:
UnicodeDecodeError:'gbk'编解码器无法解码位置6的字节0xbd:非法的多字节序列
这里尝试改一下utf-8编码
大部分中文文档都可以用utf-8
file=open('one1.txt','r',encoding='utf-8')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 13:50:09 | 显示全部楼层
逃兵 发表于 2021-4-28 13:45
文本编码问题
这里涉及open函数的encoding编码参数
默认使用'gbk'解码

不行,刚才楼上的也告诉用这样的,但是结果还是报错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 13:53:15 | 显示全部楼层
suchocolate 发表于 2021-4-28 13:44
你的txt什么编码格式,用记事本打开看看右下角有标识的。

这个是utf-8的格式
1619589133(1).jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-28 13:54:02 | 显示全部楼层
本帖最后由 suchocolate 于 2021-4-28 13:56 编辑


把你现在的代码发上来吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-28 13:54:04 From FishC Mobile | 显示全部楼层
重新生成个txt,另存为,选择utf-8编码,再读取
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 14:06:32 | 显示全部楼层
suchocolate 发表于 2021-4-28 13:54
把你现在的代码发上来吧。

file=open('one1.txt','r',encoding='utf-8')
file.seek(2)
print(file.readlines())
file.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 14:16:58 | 显示全部楼层
suchocolate 发表于 2021-4-28 13:54
把你现在的代码发上来吧。

file=open('one1.txt','r',encoding='utf-8')
file.seek(2)
print(file.readlines())
file.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-28 14:18:49 | 显示全部楼层
本帖最后由 suchocolate 于 2021-4-28 14:23 编辑
江湖散人 发表于 2021-4-28 14:16
file=open('one1.txt','r',encoding='utf-8')
file.seek(2)
print(file.readlines())


把seek去掉。
读二进制文件的话能够准确知道字节数,文本文件时不好判断飘逸到哪里了,并不代表字数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 14:21:24 | 显示全部楼层

['\ufeff中国\n', '美丽\n', '地广']
去掉后就是这样的结果,前边还多了几个字母。咋去掉嗯?
这个程序就是想练练这个seek的用法的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-28 14:26:32 | 显示全部楼层    本楼为最佳答案   
江湖散人 发表于 2021-4-28 14:21
['%ufeff中国\n', '美丽\n', '地广']
去掉后就是这样的结果,前边还多了几个字母。咋去掉嗯?
这个程序 ...

练习seek看这个:https://www.runoob.com/python3/python3-file-seek.html
你这标题大家以为你在练习读取文本文件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 14:31:47 | 显示全部楼层
suchocolate 发表于 2021-4-28 14:26
练习seek看这个:https://www.runoob.com/python3/python3-file-seek.html
你这标题大家以为你在练习读 ...

好的,谢谢啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 00:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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