Почему это работает в IDE, но не в CMD Prompt? - PullRequest
0 голосов
/ 04 мая 2019

Код обращается к доске объявлений и индексирует / сообщает главные темы. Используя 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 голосов
/ 04 мая 2019

Похоже, ваш код написан на python 3, но по умолчанию установлено значение python 2.

При запуске кода в CMD просто добавьте python3 myfile.py вместо python myfile.py

0 голосов
/ 04 мая 2019

Отмечу две вещи.

Во-первых, вы используете операторы печати, подобные этому

print ('[*] ' + item)

, что означает, что вы используете Python 3.x

Во-вторых, однако, ваш вывод cmd использует python 2.7. Похоже, это ваша проблема. Попробуйте python3 filename.py в командной строке вместо python filename.py, так как это то, к чему оно применяется по умолчанию, когда вы оба установили.

Посмотрим, решит ли это это раньше всего.

0 голосов
/ 04 мая 2019

Убедитесь, что среда Python в CMD и Wing одинакова. Установите переменные окружения, которые находятся в Wing IDE в CMD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...