python进程实例
需要用到的一些知識:
1.open() 文件操作
open(路徑+文件名,讀寫模式)
f=open(‘/tmp/hello’,’w’)
讀寫模式:r只讀, r+讀寫, w新建(會覆蓋原有文件) ,a追加, b二進制文件. 常用模式
如:’rb’,’wb’,’r+b’等等
讀寫模式的類型有:
rU 或 Ua 以讀方式打開, 同時提供通用換行符支持 (PEP 278)
w 以寫方式打開,
a 以追加模式打開 (從 EOF 開始, 必要時創(chuàng)建新文件)
r+ 以讀寫模式打開
w+ 以讀寫模式打開 (參見 w )
a+ 以讀寫模式打開 (參見 a )
rb 以二進制讀模式打開
wb 以二進制寫模式打開 (參見 w )
ab 以二進制追加模式打開 (參見 a )
rb+ 以二進制讀寫模式打開 (參見 r+ )
wb+ 以二進制讀寫模式打開 (參見 w+ )
ab+ 以二進制讀寫模式打開 (參見 a+ )
注意:
1、使用’W’,文件若存在,首先要清空,然后(重新)創(chuàng)建,
2、使用’a’模式 ,把所有要寫入文件的數(shù)據(jù)都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,將自動被創(chuàng)建。
f.read([size]) size未指定則返回整個文件,如果文件大小>2倍內(nèi)存則有問題.f.read()讀到文件尾時返回”“(空字串)
file.readline() 返回一行
file.readline([size]) 返回包含size行的列表,size 未指定則返回全部行
for line in f: print line #通過迭代器訪問
f.write(“hello\n”) #如果要寫入字符串以外的數(shù)據(jù),先將他轉(zhuǎn)換為字符串.
f.tell() 返回一個整數(shù),表示當(dāng)前文件指針的位置(就是到文件頭的比特數(shù)).
f.seek(偏移量,[起始位置]) 用來移動文件指針
偏移量:單位:比特,可正可負(fù)
起始位置:0-文件頭,默認(rèn)值;1-當(dāng)前位置;2-文件尾
f.close() 關(guān)閉文件
2.python strip()函數(shù)
聲明:s為字符串,rm為要刪除的字符序列
s.strip(rm) 刪除s字符串中開頭、結(jié)尾處,位于 rm刪除序列的字符
s.lstrip(rm) 刪除s字符串中開頭處,位于 rm刪除序列的字符
s.rstrip(rm) 刪除s字符串中結(jié)尾處,位于 rm刪除序列的字符
注意:
3.python讀取文件時提示:
“UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 205: illegal multibyte sequence”
解決辦法1.
FILE_OBJECT= open(‘order.log’,’r’, encoding=’UTF-8’)
解決辦法2.
FILE_OBJECT= open(‘order.log’,’rb’)
代碼示例:
# 并行處理某個目錄下文件中的字符個數(shù)和行數(shù),存入res.txt文件中, # 每個文件一行,格式為:filename:lineNumber,charNumberimport os import time from multiprocessing import Pooldef getFile(path) : #獲取目錄下的文件listfileList = []for root, dirs, files in list(os.walk(path)) : # 遍歷path下的所有文件for i in files:if i.endswith('.py'):fileList.append(root + "\\" + i) # 得到了完整的路徑# print(fileList) # 打印符合條件的文件return (fileList) # 打印符合條件的文件def operFile(filePath) : #統(tǒng)計每個文件中行數(shù)和字符數(shù),并返回with open(filePath,'r',encoding='utf-8') as f: # 以utf-8統(tǒng)一的編碼格式content=f.readlines() lines = len(content) alphaNum = 0for i in content :alphaNum += len(i.strip('\n')) return filePath,lines,alphaNumdef out(list1, writeFilePath) :#將統(tǒng)計結(jié)果寫入結(jié)果文件中fileLines = 0charNum = 0with open(writeFilePath,'a') as fp: # 以追加的模式for i in list1 :# 寫入的第一個參數(shù)是path,第二個是行數(shù),第三個是字符數(shù)# 使用'w',文件若存在,首先要清空,然后(重新)創(chuàng)建fp.write(i[0] + " 行數(shù):"+ str(i[1]) + " 字符數(shù):"+str(i[2]) + "\n")fileLines += i[1]charNum += i[2] print ('總的行數(shù):',fileLines)print ('總的字符數(shù):',charNum)if __name__ == "__main__": #創(chuàng)建多個進程去統(tǒng)計目錄中所有文件的行數(shù)和字符數(shù)startTime = time.time()filePath = 'C:\\Users\\LiLong\\Desktop\\python日常'fileList = getFile(filePath) pool = Pool(5) # 創(chuàng)造一個進程池,并且最多能容納5個進程resultList =pool.map(operFile, fileList) pool.close()pool.join()# 寫入文件的路徑writeFilePath = "C:\\Users\\LiLong\\Desktop\\process\\rex.txt"print(resultList) out(resultList, writeFilePath) endTime = time.time()print("used time is ", endTime - startTime)運行結(jié)果:
參考:
http://www.cnblogs.com/dkblog/archive/2011/02/24/1980651.html
http://blog.csdn.net/seetheworld518/article/details/49639651
總結(jié)
以上是生活随笔為你收集整理的python进程实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工行信用卡还款有宽限期吗
- 下一篇: 微信亲属卡在哪里