为什么这在IDE中起作用但在CMD Prompt中不起作用?

时间:2019-05-04 01:23:46

标签: python cmd callback

该代码可到达留言板,并索引/报告最重要的主题。使用WING IDE,它可以正常工作并且不会报告任何错误。但是,当通过命令提示符运行时,它会错误地指出无法正确编码字符。这是我第一次看到此消息,却没有找到修复它的好资源。

由于它在WING中运行良好,因此我不确定要在代码中添加哪些其他内容,以防止在命令提示符下发生此问题。

import requests

from bs4 import BeautifulSoup

url = raw_input("Enter the board URL: ")

print "\n"

#send the HTTP request
response = requests.get(url)

if response.status_code == 200:

    #pull the content
    html_content = response.content

    #send the page to BeautifulSoup
    html_doc = BeautifulSoup(html_content, "html.parser")

    #extract topic data
    topic_spider = html_doc.find_all("span",{"class":"subject"})
    data = []
    for topic in topic_spider:
        if topic.text!='':
            data.append(topic.text)
    topiclist = list(dict.fromkeys(data))
    topiclist.sort(reverse=False)
    for item in topiclist:
        print ('[*] ' + item)

WING可以正常运行,没有错误。通过CMD,在多次成功结果之后会出现以下结果:

[*] Parenting (successful result)
Traceback (most recent call last):
  File "D:\xxxx\topicindexer.py", line 29, in <module>
    print ('[*] ' + item)
  File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2019' in position 31: character maps to <undefined>

3 个答案:

答案 0 :(得分:0)

确保CMD和Wing中的python环境相同。 设置CMD的Wing IDE中的环境变量。

答案 1 :(得分:0)

看起来您的代码是用python 3编写的,但默认设置为python 2。

在CMD中运行代码时,只需添加python3 myfile.py而不是python myfile.py

答案 2 :(得分:0)

我注意到两件事。

一个,您使用这样的打印语句

print ('[*] ' + item)

表示您正在使用python 3.x

第二,但是,您的cmd输出使用python 2.7。 那似乎是你的问题。在命令行上尝试使用python3 filename.py而不是python filename.py,因为这是安装两者后的默认设置。

先看看这是否可以解决。