鱼C论坛

 找回密码
 立即注册
查看: 4506|回复: 20

Python文件读取问题

[复制链接]
发表于 2016-10-27 17:49:05 | 显示全部楼层 |阅读模式
5鱼币
  1. f=open('/Users/David/Desktop/test.txt','w')
  2. >>> f.write('我爱你,David')
  3. Traceback (most recent call last):
  4.   File "<pyshell#4>", line 1, in <module>
  5.     f.write('我爱你,David')
  6. UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
复制代码

前面创建了一个,我看桌面上也显示了,但如果要写入内容就不合适了,报错,求大神指点。
还有
  1. open('/Users/David/Downloads/string1.txt')
  2. <_io.TextIOWrapper name='/Users/David/Downloads/string1.txt' mode='r' encoding='US-ASCII'>
复制代码

这个合适吗?后面读取内容时也会报错

最佳答案

查看完整内容

open('xx', 'a', encoding='utf-8')
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 17:49:06 | 显示全部楼层
那年晚秋 发表于 2016-10-27 21:20
我是新手,但还是搞不懂,求高手指点下面情况该怎么办?

open('xx', 'a', encoding='utf-8')
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 18:18:05 | 显示全部楼层
文件第一行加#coding=utf-8
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 18:21:00 From FishC Mobile | 显示全部楼层
或者直接换python 3也没问题了,python 2的编码问题搞得想死的心都有了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 18:40:51 | 显示全部楼层
换Python3。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 19:36:53 | 显示全部楼层
直接换Python3.X绝对没问题了~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 19:55:27 | 显示全部楼层
你需要让你的文件和你生成的内容保持一致的编码。

比如说,你有个一个字符串 a = 'a',
你不知道什么编码,然后你打开一个文件,
你已经知道怎么看文件是什么编码了,你只需要把字符串也搞成一样的编码就行了。
a = a.encode('xxx')
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-27 21:13:23 | 显示全部楼层
duanshui1184 发表于 2016-10-27 18:18
文件第一行加#coding=utf-8

我加了,不好使啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-27 21:13:59 | 显示全部楼层
jerryxjr1220 发表于 2016-10-27 18:21
或者直接换python 3也没问题了,python 2的编码问题搞得想死的心都有了

我用的是Python3.5啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-27 21:15:29 | 显示全部楼层

我用的Python3.5啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-27 21:17:13 | 显示全部楼层
°﹍M、Sulayman 发表于 2016-10-27 19:36
直接换Python3.X绝对没问题了~

我用的Python3.5啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-27 21:20:34 | 显示全部楼层
wei_Y 发表于 2016-10-27 19:55
你需要让你的文件和你生成的内容保持一致的编码。

比如说,你有个一个字符串 a = 'a',

我是新手,但还是搞不懂,求高手指点下面情况该怎么办?
  1. >>> f=open('/Users/David/Desktop/test.txt')
  2. >>> f
  3. <_io.TextIOWrapper name='/Users/David/Desktop/test.txt' mode='r' encoding='US-ASCII'>
  4. >>> f.read()
  5. 'abc'
  6. >>> f.close()
  7. >>> f=open('/Users/David/Desktop/test.txt','a')
  8. >>> f.write('def')
  9. 3
  10. >>> f.close()
  11. >>> f=open('/Users/David/Desktop/test.txt','a')
  12. >>> f.write('你好')
  13. Traceback (most recent call last):
  14.   File "<pyshell#8>", line 1, in <module>
  15.     f.write('你好')
  16. UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 21:25:06 | 显示全部楼层
那年晚秋 发表于 2016-10-27 21:20
我是新手,但还是搞不懂,求高手指点下面情况该怎么办?

为啥要 io encoding成‘US ASCII'?
怪不得你会编码错误
Python 3.5的编码默认应该是utf8
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-27 21:32:54 | 显示全部楼层
wei_Y 发表于 2016-10-27 21:23
open('xx', 'a', encoding='utf-8')

就是的就是的就是的,能给我大概说说为啥吗?视频中咋不说呢,视频中直接输入就好了,困惑了我老长时间了,我爱死你了,还有,我下次还要问你,我能加你好友吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-27 21:45:07 | 显示全部楼层
jerryxjr1220 发表于 2016-10-27 21:25
为啥要 io encoding成‘US ASCII'?
怪不得你会编码错误
Python 3.5的编码默认应该是utf8

万分感谢,前面的我搞懂了,请不要嫌我麻烦,但是问题又来了,为什么直接打开文件名会报错
  1. >>> f=open('/Users/David/Desktop/test.txt','a',encoding='utf-8')
  2. >>> f.write('你好')
  3. 2
  4. >>> f.close()
  5. >>> f=open('test.txt')
  6. Traceback (most recent call last):
  7.   File "<pyshell#13>", line 1, in <module>
  8.     f=open('test.txt')
  9. FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 22:08:10 | 显示全部楼层
那年晚秋 发表于 2016-10-27 21:45
万分感谢,前面的我搞懂了,请不要嫌我麻烦,但是问题又来了,为什么直接打开文件名会报错

python程序的默认运行目录就是python所在的目录。
比如当前python的程序所在 /user目录,那么直接open('xxx')就相当于 open('/user/xxx').
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-27 22:11:33 | 显示全部楼层
wei_Y 发表于 2016-10-27 22:08
python程序的默认运行目录就是python所在的目录。
比如当前python的程序所在 /user目录,那么直接open(' ...
  1. >>> f=open('/Users/David/Desktop/test.txt','a',encoding='utf-8')
  2. >>> f.write('你好')
  3. 2
  4. >>> f.close()
  5. >>> f=open('test.txt')
  6. Traceback (most recent call last):
  7.   File "<pyshell#13>", line 1, in <module>
  8.     f=open('test.txt')
  9. FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
复制代码

只能写路径,不能这样写吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 22:28:15 | 显示全部楼层
那年晚秋 发表于 2016-10-27 22:11
只能写路径,不能这样写吗?

你的python根目录下,没有test.txt 当然找不到了,你的test.txt文件在桌面上啊,桌面的路径就是/Users/David/Desktop/test.txt
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-28 00:35:43 | 显示全部楼层
jerryxjr1220 发表于 2016-10-27 22:28
你的python根目录下,没有test.txt 当然找不到了,你的test.txt文件在桌面上啊,桌面的路径就是/Users/Da ...

对哦,谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-28 00:38:11 | 显示全部楼层


                               
登录/注册后可看大图

这是怎么回事?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 14:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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