Python学习(9)——IO编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 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()函数,这样可以把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名

(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类似

猜你喜欢

转载自blog.csdn.net/yjh4866/article/details/84102565