#金庸先生今天去世了,纪念一下!
1.读文件
打开文件 open()
f=open(D:\git\learn\test7.txt,'r') # 'r' 表示读
读取文件内容 f.read()
关闭文件 f.close() 文件使用完之后必须关闭
保证读取文件出错的时候也能关闭文件用 try… finally
try:
f=opean(D:\git\learn\test7.txt,'r')
print(f.read())
finally:
if f:
f.close()
可以用with语句,可以自动调用close()
with open(D:\git\learn\test7.txt,'r') as f:
print(f.read())
读取二进制文件,用’rb’模式打开
非utf-8编码的文本,需要open()传入encoding参数
f = open('/Users/michael/test.jpg', 'rb')
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')
2.写文件
和读文件类似,在调用open()时,传入’w’或者’wb’
with open(f = open(D:\git\learn\test7.txt,'w'):
f.write('hello,world')
3.StringIO和BytesIO
StringIO就是在内存中读写str
BytesIO实现了在内存中读写bytes
>>> from io import StringIO
>>> f = StringIO('Hello!\nHi!\nGoodbye!')
>>> while True:
... s = f.readline()
... if s == '':
... break
... print(s.strip())
...
Hello!
Hi!
Goodbye!
>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write('中文'.encode('utf-8'))
6
>>> print(f.getvalue())
b'\xe4\xb8\xad\xe6\x96\x87'
4.操作文件和目录
python内置的OS模块提供可以直接调用操作系统提供的接口函数
操作文件和目录的函数的一部分放在OS模块中,一部分放在os.path中
查看创建和删除目录
#查看当前的目录的绝对路径
os.path.abspath('.')
#在某个目录下创建一个新的目录首先把新目录的完整路径表示出来
os.path.jion(D:\git\learn,'test7.text')
#然后创建一个目录
os.mkdir(D:\git\learn\test7.text)
删除一个目录
os.rmdir(D:\git\learn\test7.text)
#得到文件扩展名
os.path.splitext('/path/to/file.txt')
('/path/to/file', '.txt')
# 对文件重命名:
os.rename('test.txt', 'test.py')
# 删掉文件:
os.remove('test.py')
5.序列化
把变量从内存中变成可存储或传输的过程称之为序列化,在python中叫pickling
pickle.dumps()把任意一个对象序列化成bytes,可以把bytes写进文件
>>> import pickle
>>> d = dict(name='Bob', age=20, score=88)
>>> pickle.dumps(d)
>
>>>> f = open('dump.txt', 'wb')
>>> pickle.dump(d, f)
>>> f.close()
反序列化 pickle.load()
>>> f = open('dump.txt', 'rb')
>>> d = pickle.load(f)
>>> f.close()
>>> d
{'age': 20, 'score': 88, 'name': 'Bob'}