python學習系列 day06

2021-09-14 06:17:05 字數 3224 閱讀 5441

一、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...