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技巧及相关错误的主要内容,如果未能解决你的问题,请参考以下文章