Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python open()函数不在Spyder中工作,但在具有相同解释器的终端中工作_Python_File_Spyder - Fatal编程技术网

Python open()函数不在Spyder中工作,但在具有相同解释器的终端中工作

Python open()函数不在Spyder中工作,但在具有相同解释器的终端中工作,python,file,spyder,Python,File,Spyder,您好,我在尝试在Spyder中运行一个非常简单的程序时遇到一些问题: #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Sat May 13 18:51:59 2017 @author: admin """ f = open('shark-species.txt') for line in f: print(line) txt文件只包含拉丁字母表中的字母。在spyder IPython或Python控制台中

您好,我在尝试在Spyder中运行一个非常简单的程序时遇到一些问题:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat May 13 18:51:59 2017

@author: admin
"""

f = open('shark-species.txt')

for line in f:
    print(line)
txt文件只包含拉丁字母表中的字母。在spyder IPython或Python控制台中运行时遇到的错误是:

Traceback (most recent call last):

File "<ipython-input-5-eccaeae0c773>", line 1, in <module>
runfile('/Users/admin/pybin/LCPWP/Chapter4/sharkspecies.py', 
    wdir='/Users/admin/pybin/LCPWP/Chapter4')

File "/Users/admin/anaconda/lib/python3.5/site-
packages/spyder/utils/site/sitecustomize.py", line 880, in runfile
    execfile(filename, namespace)

File "/Users/admin/anaconda/lib/python3.5/site-
packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

File "/Users/admin/pybin/LCPWP/Chapter4/sharkspecies.py", line 11, in 
<module>
for line in f:

File "/Users/admin/anaconda/lib/python3.5/encodings/ascii.py", line 26, 
in decode
    return codecs.ascii_decode(input, self.errors)[0]

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 
7869: ordinal not in range(128)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
运行文件('/Users/admin/pybin/LCPWP/Chapter4/sharkspecies.py',
wdir='/Users/admin/pybin/LCPWP/Chapter4')
文件“/Users/admin/anaconda/lib/python3.5/site-
运行文件中的packages/spyder/utils/site/sitecustomize.py”,第880行
execfile(文件名、命名空间)
文件“/Users/admin/anaconda/lib/python3.5/site-
packages/spyder/utils/site/sitecustomize.py”,第102行,在execfile中
exec(编译(f.read(),文件名,'exec'),命名空间)
文件“/Users/admin/pybin/LCPWP/Chapter4/sharkspecies.py”,第11行,在
对于f中的行:
文件“/Users/admin/anaconda/lib/python3.5/encodings/ascii.py”,第26行,
解码中
返回编解码器。ascii_解码(输入,自身错误)[0]
UnicodeDecodeError:“ascii”编解码器无法解码位置中的字节0xc3
7869:序号不在范围内(128)

现在奇怪的是,程序在终端上运行得很好,Spyder和终端都使用同一个解释器,所以我很难理解Spyder为什么要这么做。在Spyder屏幕的bootom中,它还明确表示编码为UTF-8。

文件确实包含Unicode字符,打开文件的首选方法是使用模块,如下所示:

 import codecs

 with codecs.open('file', 'r', 'utf-8') as fp:
      lines = fp.readlines()

文件不包含Unicode字符,打开文件的首选方法是使用以下模块:

 import codecs

 with codecs.open('file', 'r', 'utf-8') as fp:
      lines = fp.readlines()

或者Python 2/3兼容方式:
io.open(…)
。我想你指的是codecs.open,是的,这很有效,谢谢,但是你知道为什么standar open函数在我的终端中有效,而在spyder中无效吗?如果你使用的是Python 3,不需要编解码器,因为内置的
open
具有相同的功能。您好,我使用的是Python 3,而内置的open函数没有在中打开文件spyder@Someguy:它在您的终端上工作,因为它支持utf-8。请参阅:sys.getfilesystemencoding()或Python 2/3兼容方式:
io.open(…)
。我想你指的是codecs.open,是的,谢谢。但是你知道为什么standar open函数在我的终端中有效,而在spyder中无效吗?如果你使用的是Python 3,不需要编解码器,因为内置的
open
具有相同的功能。您好,我使用的是Python 3,而内置的open函数没有在中打开文件spyder@Someguy:它在您的终端上工作,因为它支持utf-8。请参阅:sys.getfilesystemencoding(),其中的编码是针对脚本的。是的,我知道,但是.txt文件也是utf-8编码的,我使用的是AnacondaSo提供的Python 3.5.2解释器?重要的是默认情况下打开文件时使用的是什么编码,而不是脚本的编码。这种编码是针对脚本的。是的,我知道,但是.txt文件也是utf-8编码的,我使用的是AnacondaSo提供的Python 3.5.2解释器?重要的是默认情况下打开文件时使用的编码,而不是脚本的编码。