您的位置:首页 > 编程语言 > Python开发

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 time

import thread

def func(p1, p2):  

    time.sleep(1)

    thread.exit_thread()

thread.start_new_thread(func, (1,2))

方法2,写一个类继承threading.Thread

import time

import 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 MySQLdb

conn = 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程序生成的数据文件时,才可能有用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: