一、io
1、檔案讀寫
(1)、讀檔案
開啟檔案 : f = open('/home/jamson/pythonfiles/test.txt','r') #其路徑可以是絕對路徑,也可以是相對路徑。第二個引數是指明開啟方式 或者:
with open('test.txt','r') as f: # 系統會自動呼叫f.close()關閉開啟的檔案
print(f.read())
一次性讀 content = f.read() # 一次性讀取所有的資料並返回乙個str物件
一次讀n個位元組 cont = f.read(n)
一次讀一行 cnt = f.readline()
一次讀取所有,並按照行儲存到list contlist = f.readlines()
(2)二進位制檔案
(3)f = open('test.tx','r',encoding='gbk',errors='ignore')#其編碼預設為utf-8
(4)寫檔案
with open('test.txt','w') as f:#該方式會覆蓋原來的所有資訊
f.write('hello')
with open('test.txt','a') as f:#在文件的尾部新增資訊
f.write('hello')
2、stringio
從記憶體中讀寫str
from io import stringio
f = stringio()
f.write('hello')
f.write('world')
f.getvalue() #'hello world'
3、bytesio
二進位制操作,二進位製流,使用與stringio類似
4、目錄檔案
import os
檢視當前目錄: os.path.abspath('.')
建立乙個新的路徑 path=os.path.join('/home/jamson','testdir') #返回乙個字串,該字串為路徑
新建目錄 os.mkdir(path)
刪除目錄 os.rmdir(path)
拆分路徑 os.path.split(path) #返回乙個tuple (『/home/jamson','tesrdir')
得到檔案的字尾名 os.path.splitext(p)[1] #os.path.splitext()函式返回乙個tuple
檔案重新命名 os.rename('test.txt','text.py')
檔案刪除 os.remove('text.py')
判斷是否為目錄 os.path.isdir(x)
判斷是否為檔案 os.path.isfile(x)
5、序列化pickling
將記憶體中的變數變成可儲存或者可以傳輸的過程
import pickle
d=dict(name='jamson',age=20,score=99)
pickle.dumps(d) #將物件d序列化成bytes
with open('dump.txt','wb') as f:
pickle.dump(d,f)# 將序列寫入檔案dump.txt
with open('dump.txt','rb' as f:
t = pickle.load(f)#讀取寫入的資訊
6、json
把物件變為乙個json
import json
json_str=json.dumps(d)
反序列化
json.loads(json_str)
物件json化
def student(object):
def __init__(self,name,age):
self.name = name
self.age = age
json.dumps(s,default= lambda obj:obj.__dict__)
一般的類用dict來儲存屬性
反json化
def json2std(d):
return sudent(d['name'],d['age'])
json.loads(d,object_hook=json2std)
二、程序與執行緒
1、多程序
(1)在unix/linux、mac裡有乙個fork()函式用來建立程序
import os
pid = os.fork()#建立程序
(2)在windows下沒有fork()函式,利用python的multiprocessing模組
from multiprocessing import process
p = process(target= function_***,args=('***',))#建立乙個process物件,引數為乙個函式,以及該函式的一些引數
p.start()#啟動程序
p.join()#等待子程序接收後才執行後面的**
(3)程序池pool
當需要批量建立程序時,可以使用pool
from multiprocessing import pool
p = pool(5)#建立pool物件,5表示同時執行的程序數
for i in range(10):#建立10個程序
p.close()
p.join()#這兩句的位置不能顛倒
(4)子程序subprocess
(5)程序之間的通訊
在multiprocessing 裡有提供pipe、queue等方式
2、多執行緒
(1)threading.thread 建立執行緒
import threading
t = threading.thread(target=function_***,name='***x')#子程序將要執行的函式,以及子程序的名字
t.start()
t.join()
(2)乙個程序中的資源由所有的執行緒共享,所以易造成混亂。作業系統的p、v操作
lock = threading.lock()
在需要讀寫共享變數的時候加上
lock.acquire()#加鎖
try:
finally:
lock.release()#一定要解鎖
next
前端學習 Day06
用標籤名作為選擇器,選中所有相應的元素 根據class的屬性來選擇元素,樣式定義為 classname 根據id名來選擇元素,樣式定義為 idname 選擇器 描述 attribute 選取帶有指定屬性的元素。12456 attribute value 選取帶有指定屬性和值的元素。6 attribu...
Python之路 Day06函式
p 函式的定義 程式設計裡面的函式定義是 def作為關鍵字 def test x the function definitions x 1 return x def 定義函式的關金子 test 函式名 內可定義的形參 文件描述 非必要,但是強烈建議為你的函式新增描述資訊 x 1 泛指 塊或程式處理邏...
python基礎程式設計day06
l 1,2,3,4 l 北京 上海 深圳 l 1,二 3.14,four l 1,2,3.1,3.2 4 運算子 用於拼接列表 l 1,2,3 4,5,6 l 1,2,3,4,5,6 用原列表寫右側列表拼接,並用變數繫結列表 語法 x 可迭代物件 示例 x 1,2,3 x 4,5,6 x abc x...