python进程实例

来源:互联网 发布:求非线性方程的算法 编辑:程序博客网 时间:2024/05/18 05:59

需要用到的一些知识:

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删除序列的字符

注意:

  1. 当rm为空时,默认删除空白符(包括’\n’, ‘\r’, ‘\t’, ’ ‘)
  2. 这里的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,charNumberimport osimport timefrom multiprocessing import Pooldef 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,alphaNumdef 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

原创粉丝点击