版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yjh4866/article/details/84102565
1、文件读写
(1)由于文件读写时都有可能产生IOError
,一旦出错,后面的f.close()
就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally
来实现:
try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()
每次都这么写实在太繁琐,所以,Python引入了with
语句来自动帮我们调用close()
方法:
with open('/path/to/file', 'r') as f:
print(f.read())
(2)读数据方法:
read(),read(size),readline(),readlines()
(3)字符编码:
open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
(4)写文件:
with open('/Users/michael/test.txt', 'w') as f:
f.write('Hello, world!')
2、操作文件和目录
(1)把两个路径合成一个时,不要直接拼字符串,而要通过os.path.join()
函数,这样可以正确处理不同操作系统的路径分隔符
(2)要拆分路径时,也不要直接去拆字符串,而要通过os.path.split()
函数,这样可以把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名
扫描二维码关注公众号,回复:
4103103 查看本文章
(3)shutil
模块提供了copyfile()
的函数用于复制文件
(4)列出当前目录下的所有目录,只需要一行代码:
[x for x in os.listdir('.') if os.path.isdir(x)]
要列出所有的.py
文件,也只需一行代码:
[x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
3、序列化
(1)Python提供了pickle
模块来实现序列化
(2)pickle.dumps()
方法把任意对象序列化成一个bytes,
然后就可以把这个bytes
写入文件
(3)pickle.dump()
直接把对象序列化后写入一个file-like Object
(4)pickle.loads()
方法反序列化出对象,也可以直接用pickle.load()
方法从一个file-like Object
中直接反序列化出对象
(5)Python内置的json
模块提供了非常完善的Python对象到JSON格式的转换,调用方法与pickle类似