------------恢复内容开始------------
1.1 文件读写
1,打开文件:open(name[.mode[.buffering]]) 函数 参数:文件名 返回值:文件对象
2,文件模式:
mode(模式)参数:
r: 读模式
w : 写模式
a : 追加模式
b : 二进制模式
+ :读/写模式
例:rb 意为读一个二进制文件 。
3,文件缓冲区:
buffering(缓冲区):
0:无缓冲区 (直接写到硬盘上)
1:有缓冲区(先写入内存,仅使用flush函数或者close函数才会将数据更新到硬盘)
大于1的数字:缓冲区的大小(单位为字节)
负数:使用默认缓冲区的大小
4,文件读取:
read( ) : 读取(写入内存) 返回值:str类型的对象 : >>>f.read()"文件名"
readlines( ) : 按行读取 返回值:str类型的对象 : >>>f.read()"文件名"
close( ): 关闭文件
try...finally 函数
with 函数
5,文件写入:
类似于文件读取,区别:调用open方法时 ‘w‘或者’wb‘代表写入文本文件或者写入二进制文件
1.2 操作文件和目录
Python对文件和目录的处理常常采用 os模块和shutil模块
1,获得当前python脚本工作的目录途径 os.getcwd()
2,返回指定目录下的所有文件和目录名 os.listdir()
3,删除一个文件:os.remove(filepath)
4,删除多个空目录:os.removedirs(r"d:\path")
5,检验一个路径是否为文件:os.path.isfile(filepath)
6,判断是否是绝对路径:os.path.isabs()
7,检验路径是否真实存在:os;path.exists()
8,分离一个路径的目录名和文件名 :os.path.split() 返回值:一个元组
9,分离扩展名:os.path.splitext()
10,获取路径名:os.path.dirname(filepath)
11,获取文件名:os.path.basename(filepath)
12,读取和设置环境变量:os.gentenv()与os.puntenv()
13,给出当前平台使用的行终止符:os.linesep windows: '\r\n' Linux/Unis:'\n' Mac:'\r'
14,只是你正在使用的平台:os.name windows:'nt' Linux/Unix:'posix'
15,重命名文件或者目录:os.rename(old,new)
16,创建多级目录:os.makdedirs(r"c:\python\text")
17,创建单个目录:os.mkdir("text")
18,获取文件属性:os.stat(file)
19,获取文件大小:os.path.getsize(filename)
20,复制文件夹:shutil.copytree("olddir","newdir") //olddir和newdir都只能是目录,且newdir必须不存在
21,复制文件:shutil.copyfile("oldfile","newfile") //oldfile和newfile都只能是文件;
22,移动文件:shutil.move("oldpos","newpos")
23:删除目录:os.rmdir("dir") 只能删除空目录;
shutil.rmtree("dir") 空目录,由内容的目录都可以删
1.3 序列化设计
序列化:把内存中的变量变成可存储或可传输的过程。
反序列化:将序列化的对象重新读取到变量中。
Python中提供实现序列化的模块:cPickle(c语言编写->效率高),pickle 使用顺序:先cPickle后pickle
pickle 序列化使用的方法:dumps和dump
dumps:将对象序列化成一个str,然后将这个str写入文件进行保存。
dump:将序列化后的对象直接写入文件
pickle反序列化的方法:loads和load
loads:将序列化后的文件从磁盘读取为一个str,然后反序列化成对象
load:将文件直接反序列化成对象
对象序列化的标准格式:XML,JSON
1.4进程和线程
1,多进程:两种方法
(一)fork:基于os模块 仅适用于Unix和Linux 不支持windows
(二)mulriprocessing: 跨平台实现
(三)Pool 进程池
(一):os模块的fork:来自unix/Lunix 调用一次 返回两次 1,复制:将当前程序(父程序),复制出子程序 2,返回:fork程序分别在父子程序返回,子程序返回0,父程序返回子程序的ID。(二):multiprocessing模块:该模块提供了一个Procss类来描述一个进程对象,创建程序时,只需要传入一个执行函数和函数的参数,即可完成一个对象的创建,用start()来启动进程,用join()方法实现进程间的同步。
(三)成千上百的大数量创建子程序:进程池Pool Pool来自mulriprocessing模块,可以提供指定数量的进程供用户调用,默认大小是计算机的核数,当有新的请求提交到Pool中,如果池还没有满,就会创建一个新的进程,如果池已满,则请求等待,直到池中有进程结束,才会创建新的进程来处理它。
注意:Pool对象调用join()方法会等待子进程执行完毕,调用join()之前必须调用close(),调用close()之后就不能添加新的Process了。
Python关键字:def :定义/创建函数。
2,进程间的通信
(一)Queue(多进程安全的队列):多个进程间的通信
(二)Pipe:两个进程间的通信
(一)Queue:提供两个方法实现通信:Put和Get
os.getpid :获取当前进程ID,返回值为整型
1,Put:用以插入数据到队列中,它有两个可选参数:blocked和timeout 若blocked为True(默认值),并且timeout也为正值,g该方法会阻塞timeout指定的时间,直到队列有剩余的空间,如果超时,会抛出Queue.Full异常。如果blocked为Flase,但该Queue已满,会立即返回Queue.Full的异常。
2,Get:可以从队列中读取和删除一个元素。同样,Get有两个可选参数:blocked和timeout。如果blocked为True,并且timeout为正值,那么在等待时间内没有等到任何元素,会抛出Queue.Full的异常。如果blocked为Flase,分两种情况,如果Queue有一个值可用,则立即返回该值;否则,如果队列为空,则立即抛出Queue.Empty的异常
------------恢复内容结束------------