Windows 操作系统中的 Python 3.6 openurl 行为不同
Posted
技术标签:
【中文标题】Windows 操作系统中的 Python 3.6 openurl 行为不同【英文标题】:Python 3.6 openurl behaviour is different in windows OS 【发布时间】:2018-02-14 09:06:24 【问题描述】:我是python语言的初学者
我正在尝试使用 urlopen by with 语句来获取文件内容并打印该文件的所有单词。
这是我遵循的示例:
from urllib.request import urlopen
with urlopen('http://sixty-north.com/c/t.txt') as story:
story_words = []
for line in story:
line_words = line.decode('utf-8').split()
for word in line_words:
story_words.append(word)
print(story_words)
该代码在pyfiddle 网站上运行良好,但在我的本地机器上无法运行。
结果应该是这样的:
['It', 'was', 'the', 'best', 'of', 'times', 'it', 'was', 'the', 'worst', 'of', 'times ', 'it', 'was', 'the', 'age', 'of', '智慧', 'it', 'was', 'the', 'age', 'of', '愚蠢', '它','是','the','epoch','of','belief','it','was','the','epoch','of','怀疑','it ', '是', 'the', 'season', 'of', 'Light', 'it', 'was', 'the', 'season', 'of', 'Darkness', 'it', 'was', 'the', 'spring', 'of', 'hope', 'it', 'was', 'the', 'winter', 'of', 'despair', 'we', 'had ','一切','之前','我们','我们','有','什么都没有','之前','我们','我们','曾经','所有','去', 'direct'、'to'、'heaven'、'we'、'were'、'all'、'going'、'direct'、'the'、'other'、'way'、'in'、'short ', 'the', 'period', 'was', 'so', 'far', 'like', 'the', 'present', 'period', 'that', 'some', 'of', '它','最吵','权威','坚持','on','它','存在','接收','for','good','or','for','evil ', 'in', 'the', '***', 'degree', 'of', 'comparison', 'only']
我正在使用带有 python 版本 3.6 的 Windows 10
这是当我尝试在本地打印单词时向我显示的错误:
Traceback(最近一次调用最后一次): 文件“”,第 4 行,在 line_words = line.decode('utf-8').split() UnicodeDecodeError:“utf-8”编解码器无法解码位置 1 的字节 0x8b:无效的起始字节
我还打印了没有解码的单词,看看它是如何出现在两个(pyfiddle和本地)中的:
在 pyfiddle 中:
[b'It', b'was', b'the', b'best', b'of', b'times', b'it', b'was', b'the', b 'worst', b'of', b'times', b'it', b'was', b'the', b'age', b'of', b'wisdom', b'it', b '是',b'the',b'age',b'of',b'愚蠢',b'it',b'was',b'the',b'epoch',b'of',b '信念',b'it',b'was',b'the',b'epoch',b'of',b'怀疑',b'it',b'was',b'the',b 'season', b'of', b'Light', b'it', b'was', b'the', b'season', b'of', b'Darkness', b'it', b '是',b'the',b'spring',b'of',b'hope',b'it',b'was',b'the',b'winter',b'of',b '绝望', b'we', b'had', b'everything', b'before', b'us', b'we', b'had', b'nothing', b'before', b 'us', b'we', b'were', b'all', b'going', b'direct', b'to', b'Heaven', b'we', b'were', b 'all', b'going', b'direct', b'the', b'other', b'way', b'in', b'short', b'the', b'period', b 'was', b'so', b'far', b'like', b'the', b'present', b'period', b'that', b'some', b'of', b 'its', b'noisiest', b'authorities', b'insisted', b'on', b'its', b'being', b'received', b'for', b'good', b 'or', b'for', b'evil', b'in', b'the', b'***', b'degree', b'of', b'comparison', b'only']
本地:
[b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\x91Qn\x840', b'D\xff\xf7\x14>L?Z\xa9\x97 \x08d', b"\xd6\x86\x18\xd9\x06\xb4\xb7\xaf\xb3\xabU\xbb\x15\xed\x17\xc1o\xec\x8c'\x1fNG2\xf2\x02\x1a@ 987654324@/mXe,\x9d\x0f\xa8\x8c\xe9\x14q\x1b\x15y\xab\xec\xb7\x9f\xdc\x90LZ\x17|\xf2\\xfc\x1c\xbd%\xbd\xfe \xbe\xd3V\xe56wZd\xc5\xcbz\xdc\x1c\xdaI\x86\xad\x89\xf5r\x80J\xca\x84\x1dz\xf3\xd2\xdb\x06L\xa2\xa0\xcd\x9e\xac \xc9', b'8\x10\xc7T+\xcd\xd2Yf\xc5\xe8\xe4B\xefH;\xda?\x92\xb0\x11\x03\xc3\xc5\x91b\xddFVD\x1f\xe5\x15\ xca\x92\xeffMhJJ\x95\xafx', b"\x85\xa1\xf9S\xe2%yh\x96\x9e|\xecg\xe1\x91\x8d\xfb\xa3\xa6\xcdc\x1e\xfcD\ xae\xc6\xe6\xc8\x14Qu\xd1\x80\xee#\\x80\xf7\xa8\xc66a-\xa6\xc57\xce\x17\xec\\xa3\xe7\x11\xe1\x167\xd5\ xe4!\x8c\xa8f\xc5\xfd\x8dGY\xd6\xa4|\x8f\xbe\xd5\xdb\x17\xc5v'\x1dQ\x02\x00\x00"]
谁能告诉我这里发生了什么,我该如何解决?
【问题讨论】:
您似乎收到了 gzip 压缩的数据。它有时可能是由修改请求标头的某些 AV/防火墙引起的。尝试禁用您的防病毒软件。或者,您可以尝试使用官方文档建议使用的 Requests 库而不是 urllib。 我发现它的发生是因为它自己的网络,因为我连接到另一个网络并且它工作正常。在不改变网络的情况下,Requests 库也能完美运行。 【参考方案1】:代码现在可以运行了。
这个问题是自己的网络造成的,换网后还是正常的,可能是旧网络的防火墙配置造成的。
也正如Thierry Lathuille 建议的那样,在不改变网络的情况下,我们可以使用Requests 库并且它运行良好。
谢谢。
【讨论】:
以上是关于Windows 操作系统中的 Python 3.6 openurl 行为不同的主要内容,如果未能解决你的问题,请参考以下文章
Windows 10- python 3.6 - 安装nltk
如何在 Windows 上将 Python 3.8 切换到 Python 3.6 作为默认值?
在 Windows 的 Python 3.6 中安装 mysqlclient