python进程实例

xiaoxiao2021-02-28  65

需要用到的一些知识:

1.open() 文件操作

open(路径+文件名,读写模式) f=open(‘/tmp/hello’,’w’)

读写模式:r只读, r+读写, w新建(会覆盖原有文件) ,a追加, b二进制文件. 常用模式

如:’rb’,’wb’,’r+b’等等 读写模式的类型有:

rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278) w 以写方式打开, a 以追加模式打开 (从 EOF 开始, 必要时创建新文件) r+ 以读写模式打开 w+ 以读写模式打开 (参见 w ) a+ 以读写模式打开 (参见 a ) rb 以二进制读模式打开 wb 以二进制写模式打开 (参见 w ) ab 以二进制追加模式打开 (参见 a ) rb+ 以二进制读写模式打开 (参见 r+ ) wb+ 以二进制读写模式打开 (参见 w+ ) ab+ 以二进制读写模式打开 (参见 a+ )

注意: 1、使用’W’,文件若存在,首先要清空,然后(重新)创建, 2、使用’a’模式 ,把所有要写入文件的数据都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,将自动被创建。 f.read([size]) size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回”“(空字串)

file.readline() 返回一行

file.readline([size]) 返回包含size行的列表,size 未指定则返回全部行

for line in f: print line #通过迭代器访问

f.write(“hello\n”) #如果要写入字符串以外的数据,先将他转换为字符串.

f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).

f.seek(偏移量,[起始位置]) 用来移动文件指针

偏移量:单位:比特,可正可负

起始位置:0-文件头,默认值;1-当前位置;2-文件尾

f.close() 关闭文件

2.python strip()函数

声明:s为字符串,rm为要删除的字符序列

s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符

s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符

s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符

注意:

当rm为空时,默认删除空白符(包括’\n’, ‘\r’, ‘\t’, ’ ‘)这里的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’)

代码示例:

# 并行处理某个目录下文件中的字符个数和行数,存入res.txt文件中, # 每个文件一行,格式为:filename:lineNumber,charNumber import os import time from multiprocessing import Pool def getFile(path) : #获取目录下的文件list fileList = [] 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) : #统计每个文件中行数和字符数,并返回 with open(filePath,'r',encoding='utf-8') as f: # 以utf-8统一的编码格式 content=f.readlines() lines = len(content) alphaNum = 0 for i in content : alphaNum += len(i.strip('\n')) return filePath,lines,alphaNum def out(list1, writeFilePath) : #将统计结果写入结果文件中 fileLines = 0 charNum = 0 with open(writeFilePath,'a') as fp: # 以追加的模式 for i in list1 : # 写入的第一个参数是path,第二个是行数,第三个是字符数 # 使用'w',文件若存在,首先要清空,然后(重新)创建 fp.write(i[0] + " 行数:"+ str(i[1]) + " 字符数:"+str(i[2]) + "\n") fileLines += i[1] charNum += i[2] print ('总的行数:',fileLines) print ('总的字符数:',charNum) if __name__ == "__main__": #创建多个进程去统计目录中所有文件的行数和字符数 startTime = time.time() filePath = 'C:\\Users\\LiLong\\Desktop\\python日常' fileList = getFile(filePath) pool = Pool(5) # 创造一个进程池,并且最多能容纳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)

运行结果:

参考:

http://www.cnblogs.com/dkblog/archive/2011/02/24/1980651.html http://blog.csdn.net/seetheworld518/article/details/49639651

转载请注明原文地址: https://www.6miu.com/read-28820.html

最新回复(0)