python技巧及相关错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python技巧及相关错误相关的知识,希望对你有一定的参考价值。

文件:

打开文件时,如果报错提示GBK,可能是文件内容的编码问题,可以打开时加上参数:
open(filename=path,encoding=None)

-------------------------------------------------------------------------------------------
序列:

列表、元组和字典均可以使用索引的方式来获取值,列表和元组得到的是索引值,而字典得到则是Key。
dict1.setdefault(x,y)------追加到字典

以下两句同一个意思,返回同一个结果:
for i in dict1
for i in dict1.keys()

--------------------------------------------------------------------------------------------
字符:

字符的方法
str.splitext()-----按后面参数进行分割
如 a= ‘1:2‘
a.splitext(‘:‘)得到的是一个元组(1,2)


\n 换行
\b 退格
\a 发出系统响铃声


\t 横向制表符
\v 纵向制表符
\r 回车
\f 换页
\o 八进制
\x 十六进制
\0 表示一个空格
\\ 反斜杠


字符操作方法:
isalpha() 判断是否为字符
isdigit() 判断是否为数字
upper() 转换为大写
lower() 转换为小写
capitalize() 字符串首个字母大写
title() 将首个大写以下空格或标点后的首个字符大写
strip() 可删除字符串前后的空格,也可删除指定的字符
spilt()可用参数来进行切片操作
如: 2:3
a,b = spilt(2:3)
a
2
b
3


>>> str1
‘ ***skdfj*** ‘
>>> str1 = str1.strip()
‘***skdfj***‘
>>> str1 = str1.strip(‘*‘)
‘skdfj‘
lstrip() 删除左边的空格或字符
rstrip() 删除右边的空格或字符

count() 统计字符串出现有次数
find() 查找字符串出现的位置
replace() 替换字符串


--------------------------------------------------------------------------------------------
错误:

只有当条件错误时,才输入底下的内容
try:
条件:
except:
输入内容
在Try中可用raise 返回一个错误的名称,执行后面的except语句

raise 错误名称可产生一个错误名,此名称Python须存在
raise KeyboardInterrupt

---------------------------------------------------------------------------------------------
格式化:

格式化小数位数有两种方法:---这里2f前必须加小点才可以,否则会返回错误的值。
a = 3.1415926
print(‘this is {0:.2f}‘.format(a))
print(‘this is %.2f‘ % a)

>>> numbers = [ 10,30,3,0,100]
>>> for number in numbers:
if number == 0:
print(‘这是0,不能除,否则会错误‘)
newnum = 100 / number
print((‘100/{} = {}).format(number,newnum))

SyntaxError: EOL while scanning string literal
>>> for number in numbers:
if number == 0:
print(‘这是0,不能除,否则会错误‘)
newnum = 100 / number
print((‘100/{} = {}‘).format(number,newnum))

100/10 = 10.0
100/30 = 3.3333333333333335
100/3 = 33.333333333333336
这是0,不能除,否则会错误
Traceback (most recent call last):
File "<pyshell#59>", line 4, in <module>
newnum = 100 / number
ZeroDivisionError: division by zero
>>> for number in numbers:
if number == 0:
print(‘这是0,不能除,否则会错误‘)
continue
newnum = 100 / number
print((‘100/{} = {}‘).format(number,newnum))

100/10 = 10.0
100/30 = 3.3333333333333335
100/3 = 33.333333333333336
这是0,不能除,否则会错误
100/100 = 1.0
>>>


------------------------------------------------------------------------------------------------
函数:

16课的Main()函数
列表的reverse() 返回是None,reversed(list)是可以正常返回的


locals()---指当前目录

列表正常通过POP是弹出最后一个,如果想要用先进先出,可用以下函数:
from collections import deque
deque.left()弹出最左边的

-------------------------------------------------------------------------------------------------
35课 EasyGui总结

按钮:
msgbox()-----消息对话,返回按钮值
ccbox() ynbox()-------按钮1返回1,按钮2返回0
buttonbox()-----多个按钮,返回按钮名称值
indexbox()-------按钮1返回0,按钮2返回1
bootbox()---------------按钮1返回1,按钮2返回0


选项:
choicebox()--------单选
multchoicebox()------多选

消息输入:
enterbox()-------消息输入,返回输入的信息
integetbox()-------数字输入,非数字重新输入
multenterbox()-------多个消息输入,返回一个List

密码输入:
passwordbox()------密码输入,返回密码字符串
multpasswordbox()------多个输入,最后一个显示星号
textbox()

目录文件:
diropenbox()-------目录打开,显示目录路径
fileopenbox()---------文件打开,显示文件路径
filesavebox()---------文件保存,显示文件路径

捕获异常:
exceptionbox()----------捕获异常信息,返回窗口

-----------------------------------------------------------------------------------------------
模块chardet

用于检测目标网页的编码

可通过easy_install 或 pip方式安装
cmd: easy_install chardet

chardet.detect(html)----得到的是一个字典,这里html必须已read过
chardet.detect(res.read())
{‘encoding‘: ‘GB2312‘, ‘confidence‘: 0.99}

可通过Key的方式得到编码:
>>> (chardet.detect(res.read()))[‘encoding‘]
‘GB2312‘


-----------------------------------------------------------------------------------------------
模块shutil

用于文件操作,移动

目录操作:
os.mkdir("file")
创建目录

复制文件:
shutil.copyfile("oldfile","newfile")
oldfile和newfile都只能是文件

shutil.copy("oldfile","newfile")
oldfile只能是文件夹,newfile可以是文件,也可以是目标目录

复制文件夹:
shutil.copytree("olddir","newdir")
olddir和newdir都只能是目录,且newdir必须不存在

重命名文件(目录)
os.rename("oldname","newname")
文件或目录都是使用这条命令

移动文件(目录)
shutil.move("oldpos","newpos")
oldpos 可以是文件
newpos 是目录

删除文件
os.remove("file")

删除目录
os.rmdir("dir")只能删除空目录

shutil.rmtree("dir")
空目录、有内容的目录都可以删

转换目录
os.chdir("path") 换路径


os模块调用系统shell有以下方法:
os.system(cmd)
os.popen(cmd)
还可以使用subprocess模块
subprocess.call(cmd)

 

-----------------------------------------------------------------------------------------------
模块urllib.request

可以用下面的命令下载图片
urllib.request.urlretrieve(each,filename,None)

通过Findall得到子组里的所有Img_url,是一个列表
p = r‘src="([^"]+\.jpg)‘
mglist = re.findall(p,html)

通过迭代的方式打开每个URL
for each in get_url():
  用字符串的split方式分离文件,取最后一个
filename = each.split(‘/‘)[-1]
用urlretrieve下载,不用再Open一个文件写入了
urllib.request.urlretrieve(each,filename,None)

列表、元组和字典均可以使用索引的方式来获取值,列表和元组得到的是索引值,而字典得到则是Key。

dict1.setdefault(x,y)------追加到字典

字符的方法
str.splitext()-----按后面参数进行分割
如 a= ‘1:2‘
a.splitext(‘:‘)得到的是一个元组(1,2)

 

在Try中可用raise 返回一个错误的名称,执行后面的except语句

格式化小数位数有两种方法:---这里2f前必须加小点才可以,否则会返回错误的值。
a = 3.1415926
print(‘this is {0:.2f}‘.format(a))
print(‘this is %.2f‘ % a)


\n 换行
\b 退格
\a 发出系统响铃声


\t 横向制表符
\v 纵向制表符
\r 回车
\f 换页
\o 八进制
\x 十六进制
\0 表示一个空格
\\ 反斜杠

for

>>> numbers = [ 10,30,3,0,100]
>>> for number in numbers:
if number == 0:
print(‘这是0,不能除,否则会错误‘)
newnum = 100 / number
print((‘100/{} = {}).format(number,newnum))

SyntaxError: EOL while scanning string literal
>>> for number in numbers:
if number == 0:
print(‘这是0,不能除,否则会错误‘)
newnum = 100 / number
print((‘100/{} = {}‘).format(number,newnum))

100/10 = 10.0
100/30 = 3.3333333333333335
100/3 = 33.333333333333336
这是0,不能除,否则会错误
Traceback (most recent call last):
File "<pyshell#59>", line 4, in <module>
newnum = 100 / number
ZeroDivisionError: division by zero
>>> for number in numbers:
if number == 0:
print(‘这是0,不能除,否则会错误‘)
continue
newnum = 100 / number
print((‘100/{} = {}‘).format(number,newnum))

100/10 = 10.0
100/30 = 3.3333333333333335
100/3 = 33.333333333333336
这是0,不能除,否则会错误
100/100 = 1.0
>>>

输出: 年-月-日
date1 = time.strftime(‘%Y-%m-%d‘)

输出: 时:分:秒
time1 = time.strftime(‘%H:%M:%S‘)

安装此类文件
先安装pip install wheel
再用pip install xxx.whl即可
Django-1.9.8-py2.py3-none-any.whl

Python3版本不支持mysql,可用Pymyql,但在Django同步数据库时,需要在APP的__init__.py添加如下:
import pymysql
pymysql.install_as_MySQLdb()



















































































































































































































以上是关于python技巧及相关错误的主要内容,如果未能解决你的问题,请参考以下文章

技巧方法 - CentOS6将Python2.6.6升级到Python2.7.6

python IDLE简介及使用技巧

Python代码优化及技巧笔记

Python 代码使用pdb调试技巧

Python代码优化及技巧笔记

python列表(list)的使用技巧及高级操作