Issue
ModuleNotFoundError: No module named 'requests'
由于Pycharm新建项目的时候是在虚拟环境中运行解释器,所以没有安装Requests。
解决办法:在Pycharm中打开,执行pip install requests

indexerror: list index out of range
一般列表是空的未读取到数据的情况会报此错误。
解决办法:在处理数据之前加入判断条件
def get_contents(self, target):
req = requests.get(url=target)
html = req.text
bf = BeautifulSoup(html,"html.parser")
texts = bf.find_all('div', class_='showtxt')
if(len(texts)):
print(texts[0])
texts = texts[0].text.replace('\xa0' * 8, '\n\n')
else:
dl.get_contents(target)
return texts
UnicodeEncodeError: 'ascii' codec can't encode characters
系统编码 报错的字符是一个Unicode字符,查了下发现是python3,只有str和Unicode两种编码,去查了python3的系统编码:
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
输入输出编码 既然不是系统编码,而且前面输出都没有问题,所以可能也不是之前读写文件的编码错误,可能是print的时候,也就是标准输入输出的时候编码问题了;那么print的时候做了什么,用的是什么编码呢? 我们已经知道在python3中,输出的时候,会把str/Unicode 变成utf8的编码;来看一下环境中的输出编码是什么:
>>> import sys
>>> sys.stdout.encoding
'ANSI_X3.4-1968'
解决方法 这样看来应该就是输入输出print的锅了,那么如何解决呢? 也就是如何修改标准输出编码方式呢? 有如下解决方法:
PYTHONIOENCODING 运行程序的时候加上:
PYTHONIOENCODING=utf-8 python code.py
重新定义输出标准
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
sys.stdout.write("Your content....")
Screen命令中文乱码
其实只要在使用 screen 的时候加一个 -U 参数就应该就没问题了
#创建utf8编码模式的新会话
screen -U -S new_screen_test
#查看当前会话
screen -ls
#切换会话(utf8编码查看)
screen -U -r new_screen_test
Last updated
Was this helpful?