python备忘录
2016-03-30 15:51
531 查看
一 入门
整数
x = 0浮点数
y = 0.0字符串(只读)
z = ''字节数组
w = bytearray(n)列表(list)
a = []元组(只读)
a = ()字典(dict)
b = {}函数
def func(p1, p2): #形参名称很重要pass
类
class a:def __init__(self):
pass
def func(self, p):
pass
class b(a):
def __init__(self, x):
self.x = x
pass
def func(self, p):
pass
ins = a()
sub = b(7)
包机制
每一个.py文件称为一个module,module之间可以互相导入。.py文件所在的每个目录都放一个名为_init_.py 的文件.该文件内容可以为空.
sys.path记录了Python的包路径,类型是字符串,编程中可以直接修改sys.path
异常处理
try:except Exception
as err:
finally:
二
字符串 列表 字节数组
part
1
字符串是只读的,主要有下标操作,分片操作,字符串相加。a
= 'string'
b
= a[-1]
b
= a[2:]
b
= a[:-2]
b
= a[1:-2]
s
= a + b
主要相关函数:len,split,find
x = len(a)
y = a.split('r')#返回列表
z = a.find('ing')#返回下标
列表,字节数组的操作和字符串类似,可读写。
字符串转列表
l= list(a)
列表转字符串
r= ''
for
x in l:r += x
更像python:
r = ''.join(l)
字符串转字节数组
b= a.encode('utf-8')
字节数组转字符串
a= b.decode('utf-8')
字符串转整数
i = int(a)整数转字符串
a = str(i)格式化字符串(C语言风格)
s = '%04d %s' % (i, a)由此可见,各种数据结构相互转换中,字符串处于核心地位。
三
文件
打开文件
fd= open('path/file', 'r')
'r'
以读方式打开文件。
'w' 以写方式打开文件。如文件存在,则清空该文件,再写入新内容。如果文件不存在则创建。
'a' 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建。
'r+' 以读写方式打开文件。
'w+' 清空文件内容,然后以读写方式打开文件。
'a+' 以读写方式打开文件,并把文件指针移到文件尾。
'b' 以二进制模式打开文件。
我常用的方式:'ab+'
希望扩平台读写文件时汉字不乱码,所以用了'ab+'模式(写入的二进制由字符串统一编码成'utf-8'得到),还要注意windows和linux的路径分隔符不同。
读所有内容
all = fd.read()由于操作的文件都是几KB的配置文件(大量数据都会存入数据库,而不是存入文件),所以读所有内容很常用。
读固定字节
b = fd.read(n)读每行
lines = fd.readlines()写文件
fd.write(b)文本模式只能写入字符串,编码格式与操作系统有关。
二进制模式只能写入字节数组。
关闭文件
fd.close()四 多线程
方法1,调用thread模块中的start_new_thread()函数
import timeimport thread
def func(p1, p2):
time.sleep(1)
thread.exit_thread()
thread.start_new_thread(func, (1,2))
方法2,写一个类继承threading.Thread
import timeimport threading
class glass(threading.Thread):
def __init__(self, n):
threading.Thread.__init__(self)
self.n = n
def run(self): #Overwrite run() method
time.sleep(self.n)
thread = glass(1)
thread.start()
五 socket
服务端
from socket import *HOST = ''
PORT = 9999
ADDR = (HOST, PORT)
sock = socket(AF_INET, SOCK_STREAM)
sock.bind(ADDR)
sock.listen(5)
print('waiting for connection...')
client, addr = sock.accept()
buffer = client.recv(1024)
client.send(buffer)
client.close()
sock.close()
客户端
from socket import *HOST = '127.0.0.1'
PORT = 9999
ADDR = (HOST, PORT)
sock = socket(AF_INET, SOCK_STREAM)
sock.connect(ADDR)
sock.send('111'.encode('utf-8'))
data = sock.recv(1024)
print(data)
sock.close()
六 数据库
import MySQLdbconn = MySQLdb.connect(host='localhost', port=3306, user='root', passwd='root', db='test', charset='utf8')
cur = conn.cursor()
c = cur.execute('select * from user')
r = cur.fetchall()
print('result count ' + str(c))
print(r)
cur.execute('create database abc')
conn.select_db('abc')
cur.execute('create table test(k int, v varchar(20))')
value=[1,'1']
cur.execute('insert into test values(%s, %s)', value)
conn.commit()
cur.close()
conn.close()
七 json
json的本质是字符串,可与字典相互转换。字典转字符串
str(d)字典转json
json.dumps(d, ensure_ascii=False)注意,字典转json的结果与转字符串的结果类似,但不相同。
字符串转字典
貌似没有现成的方法json转字典
json.loads(s)八 串口
打开串口fd = serial.Serial(s2, int(s3), timeout=1)
之后fd就像以二进制方式打开的文件。
九 http
抓取网页主要用的函数是response = urllib.request.urlopen(url)
之后response 就像以二进制方式打开的文件。
十 struct
s = struct.pack(fnt, *l)此后s就像C中的结构体,可以直接写入文件。
l = struct.unpack(fnt, s)
这样可以读出s中的数据,l是元祖。
正常情况,python程序是用不到这些东西的。存数据有数据库,与C程序对接有json。
只有在读老的C程序生成的数据文件时,才可能有用。
相关文章推荐
- yaml在python上的应用
- 《Python核心编程》第七章:映射和集合类型
- 数据挖掘 关联规则的FP-growth-tree(FP增长树)的python实现(一)
- python多线程join方法导致不能接收信号
- python安装扩展”unable to find vcvarsall.bat“的解决办法
- 《Python核心编程》第六章:序列、字符串、列表和元组
- python 学习 第一课
- python 使用微信远程控制电脑
- leetcode-03-Longest Substring Without Repeating Characters-python
- python正则表达式详解
- 使用pythonwin设置windows的桌面背景
- python文件操作
- 《Python核心编程》第五章:数字
- Eclipse和PyDev搭建完美Python开发环境(Windows篇)
- 在eclipse中配置python开发环境
- python远程调试Django程序
- 辛星整理python语言的两个独特之处
- Python类属性和实例属性
- python 收发邮件
- python ConfigParser模块