文件与文件系统
打开文件
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
其中,file: 必需,文件路径(相对或者绝对路径)。mode: 可选,文件打开模式。buffering: 设置缓冲。encoding: 一般使用utf8。errors: 报错级别。newline: 区分换行符。
文件对象方法
fileObject.writelines(sequence)
向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符\n。
e.g.f = open('test.txt', 'w+') seq = ['111\n', '222'] f.writelines(seq) f.seek(0, 0) for each in f: print(each) # 111 # 222 f.close()
fileObject.readline()
读取整行,包括 “\n” 字符。- fileObject.readlines()用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for… in … 结构进行处理。
- fileObject.tell()返回文件的当前位置,即文件指针当前位置。
- fileObject.seek(offset[, whence])用于移动文件读取指针到指定位置。
- offset:开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。
- whence:可选,默认值为 0。给 offset 定义一个参数,表示要从哪个位置开始偏移;0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。
- fileObject.write(str)用于向文件中写入指定字符串,返回的是写入的字符长度。
- fileObject.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符\n。
OS模块中关于文件/目录常用函数
在OS(Operation System)模块的帮助下,我们不需要关心什么操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用。
- os.getcwd()用于返回当前工作目录。
- os.chdir(path)用于改变当前工作目录到指定的路径。
- listdir (path=’.’)返回path指定的文件夹包含的文件或文件夹的名字的列表。
- os.mkdir(path)创建单层目录,如果该目录已存在抛出异常。
- os.makedirs(path)用于递归创建多层目录,如果该目录已存在抛出异常。
- os.remove(path)用于删除指定路径的文件。如果指定的路径是一个目录,将抛出 OSError。
- os.rmdir(path)用于删除单层目录。仅当这文件夹是空的才可以, 否则, 抛出 OSError。
- os.removedirs(path)递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常。
- os.rename(src, dst)方法用于命名文件或目录,从 src 到 dst,如果 dst 是一个存在的目录, 将抛出 OSError。
- os.system(command)运行系统的shell命令(将字符串转化成命令)
- os.curdir指代当前目录(.)
- os.pardir指代上一级目录(…)
- os.sep输出操作系统特定的路径分隔符(win下为\,Linux下为/)
- os.linesep当前平台使用的行终止符(win下为\r\n,Linux下为\n)
- os.name指代当前使用的操作系统(包括:‘mac’,‘nt’)
e.g.import os print(os.curdir) print(os.pardir) print(os.sep) print(os.linesep) print(os.name) # output . .. / posix
序列化与反序列化
Python 的 pickle 模块实现了基本的数据序列和反序列化。
通过 pickle 模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。
通过 pickle 模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
pickle模块中最常用的函数为:
pickle.dump(obj, file, [,protocol]) 将obj对象序列化存入已经打开的file中。
obj:想要序列化的obj对象。
file:文件名称。
protocol:序列化使用的协议。如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。
pickle.load(file) 将file中的对象序列化读出。
file:文件名称。