遇到的问题
今天,继续学习Python的时候,阅读的是《可爱的Python》我是在模仿Windows的命令行,同时也是在完善之前写的一个Python获取目录信息的一个小脚本。然而,却遇到了Python的编码问题,而且,我设置的默认编码是UTF-8。如下:
图1 错误信息
还有这个:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-18: ordinal not in range(128)
Python编码
在Python中,字符串的编码是Unicode编码。因此在做编码转换时,把Unicode编码作为中间编码,就是先把其他编码的字符串解码为Unicode编码的字符串,然后在转化为想要的编码方式。
解码方法:decode
,把其他编码方式装换为Unicode编码方式。使用方法:首先有一个utf-8编码的字符串str="中国"
,把它转化为Unicode编码:str.decode('utf-8')
。
编码方法:encode
,把Unicode编码转化为其他编码。使用方法:有一个Unicode编码的字符串str="中国"
,把它转化为GB2312编码:str.encode('gb2312')
。
解决办法
上述图一的情景是这样的:我在模拟命令行的时候,代码的默认编码是UTF-8,可是在终端中运行的时候,中文全部乱码。于是,我就把字符串前面加了 u
把字符串编码变成Unicode编码,结果,出现了图一下方的错误信息。没办法,我就把编码全部转化为gb2312编码。结果正常。如下:
具体代码如下:
# -*- coding: utf-8 -*-
# @Time : 2017/9/9 22:35
# @Author : Darker
# @Site : www.liangz.org
# @File : PyDirInfov0.1.py
# @Software: PyCharm
import sys
import cmd
# from PyDirTools import *
class PyDir(cmd.Cmd):
def __init__(self):
cmd.Cmd.__init__(self)
self.prompt = "(PyDirInfo)>"
self.intro = (u"""PyDirInfo v0.1 使用说明
dir 目录名 #指定保存和搜索目录,默认是当前目录
walk 文件名 #指定保存信息文件名,使用“ *.pdi ”
find 关键词 #在保存和搜索目录中遍历所有.pdi文件,输出含有关键词的行
? #查询
EOF #退出系统
""").encode('gb2312')
def help_EOF(self):
print "退出应用程序"
def do_EOF(self, line):
sys.exit()
def help_walk(self):
print "扫描目录内容并导出到文件"
def do_walk(self, filename):
if filename == "": filename = raw_input("输入要保存的文件名:")
print "扫描内容保存到:'%s'" % filename
def help_dir(self):
print "指定保存/搜索目录"
def do_dir(self, pathname):
if pathname == "": pathname = raw_input("输入指定保存/搜索目录:")
def help_find(self):
print "搜索关键词"
def do_find(self, keyword):
if keyword == "":keyword = raw_input("输入搜索关键词:")
print "搜索关键词:'%s'" % keyword
if __name__ == '__main__':
DirInfo = PyDir()
DirInfo.cmdloop()
目前,脚本正在完善中。
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了