文件流:
语法:
file_object = open(file_name, access_mode = ‘r’, buffering = -1)
open函数有很多的参数,常用的是file_name,mode和encoding
file_name:打开的文件名,若非当前路径,需指定具体路径
access_mode:打开文件的模式
encoding:指定数据的字符编码格式
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
1. file.close(); 关闭文件。关闭后文件不能再进行读写操作。
2. file.flush(); 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
3. file.fileno(); 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
4. file.isatty(); 如果文件连接到一个终端设备返回 True,否则返回 False。
5. file.next(); 返回文件下一行。
6. file.read([size]); 从文件读取指定的字节数,如果未给定或为负则读取所有。
7. file.readline([size]); 读取整行,包括 "\n" 字符。
8. file.seek(); 设置文件当前位置
9. file.tell(); 返回文件当前位置
10. file.truncate([size]) 从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。
11. file.write(); 将字符串写入文件,返回的是写入的字符长度。
12. file.writelines(序列); 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
不同方式打开文件列表:
1. r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
2. w,只写模式【不可读;不存在则创建;存在则清空内容】
3. x, 只写模式【不可读;不存在则创建,存在则报错】
4. a, 追加模式【可读; 不存在则创建;存在则只追加内容】,文件指针自动移到文件尾。
"+"表示可以同时读写某个文件
5. r +, 读写【可读,可写】
6. w +,写读【可读,可写】,消除文件内容,然后以读写方式打开文件。
7.x + ,写读【可读,可写】
8. a +, 写读【可读,可写】,以读写方式打开文件,并把文件指针移到文件尾。
"b"表示以字节的方式操作,以二进制模式打开文件,而不是以文本模式。
9.rb或r + b
10. wb 或w + b11.ab或a + b
os函数:
os.sep:取代操作系统特定的路径分隔符
os.getcwd:得到当前工作目录,即当前python脚本工作的目录路径。
os.getenv()和os.putenv:分别用来读取和设置环境变量
os.listdir():返回指定目录下的所有文件和目录名
os.remove(file):删除一个文件
os.stat(file):获得文件属性
os.chmod(file):修改文件权限和时间戳
os.mkdir(name):创建目录
os.rmdir(name):删除目录
os.removedirs(r“c:\python”):删除多个目录
os.system():运行shell命令
os.exit():终止当前进程
os.linesep:给出当前平台的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
os.path.split():返回一个路径的目录名和文件名
os.path.isfile()和os.path.isdir()分别检验给出的路径是一个目录还是文件
os.path.existe():检验给出的路径是否真的存在
os.listdir(dirname):列出dirname下的目录和文件
os.getcwd():获得当前工作目录
os.curdir:返回当前目录('.')
os.chdir(dirname):改变工作目录到dirname
os.path.isdir(name):判断name是不是目录,不是目录就返回false
os.path.isfile(name):判断name这个文件是否存在,不存在返回false
os.path.exists(name):判断是否存在文件或目录name
os.path.getsize(name):或得文件大小,如果name是目录返回0L
os.path.abspath(name):获得绝对路径
os.path.isabs():判断是否为绝对路径
os.path.normpath(path):规范path字符串形式
os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext():分离文件名和扩展名
os.path.join(path,name):连接目录与文件名或目录
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路径
存储在文件中
也可以存在文件中,使得对象持久化。使用的是dump和load函数,注意和上面的区别,少了s。
由于pickle写入的是二进制数据,所以打开方式需要以wb和rb的模式
# 序列化
with open('abc.txt', 'wb') as f:
dic = {'age': 23, 'job': 'student'}
pickle.dump(dic, f)
# 反序列化
with open('abc.txt', 'rb') as f:
aa = pickle.load(f)
print(aa)