📖
zhaoqiang
  • Home
  • Python
    • Python Base
      • Grammar
      • Issue
    • Web DEV
      • Html
      • WebFrame
        • Flask
        • Django
      • WebTemplate
    • Web Crawler
  • Linux
    • Navieboom
    • Telegram Bot
      • RSSBot
      • TwitterBot
    • LetsEncrypt
      • ACME Create
      • ACME Install
    • NextCloud
      • NextCloud创建
      • NextCloud性能优化
    • Google
      • Google Drive
        • 离线下载
      • Chromium
    • Synology
      • Docker
        • 清理Docker占用的磁盘空间
      • Youtube-dl
      • 群晖—-外部访问DDNS教程(第一部分)
      • 群晖—-外部访问DDNS教程(第二部分)
      • SpeedTest - Install
      • BestTrace - Install
      • Rclone - Install
      • IPKG - Install
      • LEDE - Install
    • OpenWrt
      • Compile
        • Lean-4.14
        • Lean-4.9
    • LEDE
    • Linux Base
      • Command
      • Cron
  • DynamicsAX
    • Functions
      • Document Services
        • Auto Generate XML From AX
        • Load XML Files On Server
      • Webservice
      • DB Connect
      • DirectSQL
      • Email Alert
      • Auto Items
      • Auto BOM
      • Auto Order
      • Auto Invoice
      • Auto Packing
    • Data Import
      • Initial Static Data
      • initial Dynamic Data
        • Open SO
        • Open PO
        • Opening Balance
    • Access Right
    • Process
    • Instance
      • DYNAMICS 365 FOR OPERATION INSTANCE
  • Other Skills
    • Markdown
    • GIT
      • Command
    • Office365
Powered by GitBook
On this page
  • ModuleNotFoundError: No module named 'requests'
  • indexerror: list index out of range
  • UnicodeEncodeError: 'ascii' codec can't encode characters
  • Screen命令中文乱码

Was this helpful?

  1. Python
  2. Python Base

Issue

PreviousGrammarNextWeb DEV

Last updated 6 years ago

Was this helpful?

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