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()

时间: 2024-08-02 13:41:39

python技巧及相关错误的相关文章

爱情有36计,不如看我这26条python技巧!

作者 Peter Gleeson 是一名数据科学家,日常工作几乎离不python.一路走来,他积累了不少有用的技巧和tips,现在就将这些技巧分享给大家.这些技巧将根据其首字母按A-Z的顺序进行展示. ALL OR ANY Python之所以成为这么一门受欢迎的语言一个原因是它的可读性和表达能力非常强.Python也因此经常被调侃为“可执行的伪代码”.不信你看: x = [True, True, False]if any(x):    print("At least one True"

python技巧31[移植python2.x到3.x]

我们都知道python从2.x升级到3.x的过程中有一些不兼容的改动,但是有时还我们不得不将2.x的程序升级到3.x. 主要不兼容如下图: 移植过程: 1) 确保存在的代码有足够的测试覆盖.从2.x到3.x的升级工作量并不是很大,但是包含了很多的微小的不兼容,必须通过测试来确保升级后的程序仍然保持原有的功能.完全的测试覆盖不是被建议的,但是确实是需要的. 2) 用python 2.6 的 -3 命令行选项来运行程序,从而发现和去除明显的不兼容问题. 3) 使用2to3转化工具来自动地将程序转化为

Git在开发android系统时常用的技巧及常见错误解决方案

Git常用的技巧及常见错误解决方案 项目管理工作 repo 常用命令 ==目标== 了解repo工作原理及常用的repo命令 Git 日常使用的命令,常见问题及解决方案 ==关键词== Repo , Git ==工作指南== == <big>Repo</big> == Android代码其实是由若干个git 工作组织在一起的,repo 是一个便于整体管理这些项目的脚本. 拉代码时需要用到几个步骤,分别对几个步骤进行阐述一下,网上有很多repo 的使用方法,但是对其工作原理描述的并不

Python程序的常见错误(收集篇)

关于Python Python是一门解释性的,面向对象的,并具有动态语义的高级编程语言.它高级的内置数据结构,结合其动态类型和动态绑定的特性,使得它在快速应用程序开发(Rapid Application Development)中颇为受欢迎,同时Python还能作为脚本语言或者胶水语言讲现成的组件或者服务结合起来.Python支持模块(modules)和包(packages),所以也鼓励程序的模块化以及代码重用. 关于本文 Python简单.易学的语法可能会误导一些Python程序员(特别是那些

OpenStack虚机相关错误

OpenStack配置起来还是挺麻烦的,特别是网络那块.虽然官方文档越来越清晰,但有时还是会出各种错.排错主要是看日志.看官方文档和google 以下就一些虚机相关常见的错误做一下总结(基于Icehouse版): 1.起虚机时报 'No valid host' 错误 个人觉得 No valid host 是比较简单的错,那几个单词的意思就已经告诉我们很多信息了,No valid host 原因有很多种 (1)nova compute服务异常,用openstack-status查看各个服务是否是a

Oracle中字符缓冲区相关错误

一.buffer overflow,limit of 10000 bytesdeclarebeginfor c in 1..1000 loop dbms_output.put_line('测试测试测试');end loop;end;缓冲区默认大小为10000 bytes.循环1000次就一共有6000个汉字,也就是12000 bytes.在SQL窗口的输出标签页中设置缓冲区大小. 二.数字或值错误:字符串缓冲区太小declarev varchar2(100):='';beginfor c in

Python学习笔记七-错误和异常

程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Python检测到一个错误时就出现了异常. 2.异常 当编译器检测到错误并且意识到错误条件.解释器会引发一个异常(程序员也可以自己引发一个异常,后面会说到). 以下是7种Python中常见的错误. 1.NameError,尝试访问一个未申明的例子. 2.ZeroDivisionError,零除错误. 3.

Python 新手常犯错误

Python 新手常犯错误(第二部分) 转发自:http://blog.jobbole.com/43826/ 作用域 在这篇文章里,我们来关注作用域在Python被误用的地方.通常,当我们定义了一个全局变量(好吧,我这样说是因为讲解的需要——全局变量是不好的),我们用一个函数访问它们是能被Python理解的: 1 2 3 bar = 42 def foo():     print bar 在这里,我们在foo函数里使用了全局变量bar,然后它也如预想的能够正常运行: 1 2 >>> fo

python技巧

列表解析 语法:[expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr] 如果是有类的情况下,可以使用 class Person(object): 9     def __init__(self, name, age = 0): 10         self.name = name 11         self.age = age 12     def __repr__(self): 13