1. ホーム
  2. python

[解決済み] AttributeError: モジュール 'sys' には 'setdefaultencoding' という属性がない。

2022-02-11 18:52:56

質問

私のオリジナルのコードはこれです。

#py3.6, windows10   
import time
from selenium import webdriver
import codecs
import sys

reload(sys)
sys.setdefaultencoding('utf-8')

再読み込みに対応していません。修正しました。

Import importlib
Importlib.reload (sys)

しかし、エラーも発生しました。

<ブロッククオート

AttributeError: モジュール 'sys' には 'setdefaultencoding' という属性がありません。

どのように修正すればよいのでしょうか?ご協力をお願いします。

また、私のコード全体を添付します。

import time
from selenium import webdriver
import codecs
import sys

reload(sys)
sys.setdefaultencoding('utf-8')

browser = webdriver.PhantomJS('C:\phantomjs-2.1.1-windows/bin/phantomjs')
url = u'https://twitter.com/search?f=tweets&vertical=default&q=%EB%B0%B0%EA%B3%A0%ED%8C%8C%20since%3A2017-07-19%20until%3A2017-07-20&l=ko&src=typd&lang=ko'

browser.get(url)
time.sleep(1)

body = browser.find_element_by_tag_name('body')
browser.execute_script("window.scrollTo(0,document.body.scrollHeight);")

start = time.time()
for _ in range(500):
    now = time.time()
    browser.execute_script("window.scrollTo(0, 
    document.body.scrollHeight);")
    print str(_) + "    seconds: " + str(now - start) 
    time.sleep(0.2)

tweets=browser.find_elements_by_class_name('tweet-text')

with codecs.open("test.txt", "w","utf-8") as f:
    i = 1
    for i, tweet in enumerate(tweets):
        data = tweet.text
        data = data.encode('utf-8')
        print i, ":", data
        msg = (str(data) +'\n')
        f.write(msg)
        i += 1

end = time.time()
print(end - start)
browser.quit()

解決方法は?

を削除する必要があります。 sys.setdefaultencoding . の乱用であったことに注意してください。 sys.setdefaultencoding Python 2でもずっと Python 2のドキュメントより :

sys.setdefaultencoding(name)

Unicode 実装で使用される現在のデフォルト文字列エンコーディングを設定します。name が利用可能などのエンコーディングにも一致しない場合、LookupError が発生します。 この関数は、以下のような場合にのみ使用されることを意図しています。 site モジュールの実装と、必要な場合は sitecustomize . 一度 site モジュールから削除されます。 sys モジュールの名前空間です。

バージョン2.0での新機能です。

これは Python 2 の 8-bit 文字列のエンコーディングを設定します。バイト列は いいえ はPython 3でエンコードされ、ユニコード文字列( str はどちらも持たないので (Unicode ではあるが、内部エンコーディングが不透明)、この関数は Python 3 では意味がありません - あるのは 何もない にデフォルトエンコーディングを設定します。