f.read() f.write()
在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
1 #!/usr/bin/python3 2 3 f = open(‘F:/a.txt‘, ‘r‘) 4 print( f.readline() ) #读取一行内容 5 print ( f.read() ) #读取全部内容 6 f.close() #文件对象会占用OS资源,使用完毕须关闭
文件读写可能产生IOError,为保证无论是否出错都能正确地关闭文件:
1 #!/usr/bin/python3 2 3 with open(‘F:/a.txt‘, ‘r‘) as f: 4 print(f.read())
以上是读取文本文件,并且是UTF-8编码的文本文件。要读取二进制文件,比如图片、视频等等,用‘rb‘
模式打开文件,‘a’追加
要读取非UTF-8编码的文本文件,需要给open()
函数传入encoding
参数,例如,读取GBK编码的文件。
1 f = open(‘F:/gbk.txt‘, ‘r‘, encoding=‘gbk‘)
在内存中读写str
很多时候,数据读写不一定是文件,也可以在内存中读写。要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:
1 #!/usr/bin/python3 2 3 from io import StringIO 4 5 f = StringIO() 6 f.write(‘hello ‘) 7 f.write(‘chb‘) 8 print(f.getvalue())
StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。BytesIO实现了在内存中读写bytes
1 #!/usr/bin/python3 2 3 from io import BytesIO 4 5 f = BytesIO() 6 f.write(‘中文‘.encode(‘utf-8‘)) 7 print(f.getvalue())
写入的不是str,而是经过UTF-8编码的bytes
操作文件和目录的函数一部分放在os
模块中,一部分放在os.path
模块中
1 import os 2 3 os.path.abspath(‘.‘) #查看当前目录的绝对路径 4 os.path.join(‘F:/‘, ‘python_code‘) #合并路径 5 os.path.splist(‘F:/a/b/c.txt‘) #路径拆分 6 os.path.splitext(‘‘) #得到文件扩展名 7 os.mkdir(‘F:/a/b‘) #创建一个目录 8 os.rmdir(‘F:/a/b‘) #删除一个目录 9 os.rename(‘a.txt‘, ‘a.py‘) #对文件重命名 10 os.remove(‘a.py‘) #删除文件 11 12 os.listdir() #用于返回指定的文件夹包含的文件或文件夹名称 13 os.path.exists() #可以直接判断文件是否存在 14 os.path.isdir(path) #判断某路径是否为目录 15 os.path.isfile(path) #判断某路径是否为文件 16 17 #列出当前目录下的所有目录 18 [x for x in os.listdir(‘.‘) if os.path.isdir(x)] 19 20 #列出所有的.py文件 21 [x for x in os.listdir(‘.‘) if os.path.isfile(x) and os.path.splitext(x)[1]==‘.py‘]
把变量从内存中变成可存储或可传输的过程,称之为序列化(永久性存储)
Python特定的序列化模块是 pickle
1 #!/usr/bin/python3 2 3 import pickle 4 5 d = dict(name = ‘Chb‘, age = ‘21‘, score = 88) 6 f = open(‘F:/d.txt‘, ‘wb‘) 7 pickle.dump(d, f) 8 f.close
把对象从磁盘读到内存时为反序列化
1 #!/usr/bin/python3 2 3 import pickle 4 5 f = open(‘F:/d.txt‘, ‘rb‘) 6 print( pickle.load(f) ) 7 f.close
如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。
Python对象--------------->JSON格式
1 #!/usr/bin/python3 2 3 import json 4 5 d = dict(name = ‘Chb‘, age = 21, score = 88) 6 print( json.dumps(d) ) #返回一个str 内容为标准的JSON
JSON格式-------------->Python对象
1 #!/usr/bin/python3 2 3 import json 4 5 json_str = ‘{"name": "Chb", "age": 21, "score": 88}‘ 6 print(json.loads(json_str))
原文:https://www.cnblogs.com/bfcs/p/10778788.html