Python文件操作和异常处理

Python作为一门高级编程语言,为我们提供了丰富的文件操作和异常处理机制。在本文中,我们将从以下几个方面讨论Python文件操作和异常处理的相关知识:

  • 文本文件和二进制文件的读写
  • JSON文件的读写
  • 异常处理机制

文本文件和二进制文件的读写

Python可以轻松地读写文本文件和二进制文件,我们可以使用内置的open()函数来打开文件并获取文件对象,从而进行读写操作。下面是一些常用的open()函数的参数:

  • file:文件名称和路径
  • mode:打开文件的模式(读、写、追加等)
  • buffering:指定读写过程中的缓存大小
  • encoding:指定编码格式(对于文本文件)

读写文本文件

在Python中,读写文本文件非常容易。我们可以使用open()函数打开文件,然后使用read()readline()readlines()等方法来读取文件中的内容。下面是一些常用的读取文本文件的方法:

read()方法

read()方法可以一次性读取整个文件内容,例如:

with open('file.txt', 'r') as f:
    content = f.read()
    print(content)

readline()方法

readline()方法可以逐行读取文件,例如:

with open('file.txt', 'r') as f:
    line = f.readline()
    while line:
        print(line, end='')
        line = f.readline()

readlines()方法

readlines()方法可以将文件按行读取到一个列表容器中,例如:

with open('file.txt', 'r') as f:
    lines = f.readlines()
    print(lines)

在上面的例子中,readlines()方法返回的是一个包含所有行的列表。

除了读取文件,我们也可以使用write()方法来向文件中写入文本内容。例如:

with open('file.txt', 'w') as f:
    f.write('Hello, world!\\n')
    f.write('This is a test file.')

在上面的例子中,我们使用write()方法向文件中写入了两行文本内容。

读写二进制文件

要读写二进制文件,我们只需要将open()函数的模式参数设置为'rb''wb'即可。例如,下面的代码实现了复制图片文件的功能:

def main():
    try:
        with open('guido.jpg', 'rb') as fs1:
            data = fs1.read()
            print(type(data))  # <class 'bytes'>
        with open('new.jpg', 'wb') as fs2:
            fs2.write(data)
    except FileNotFoundError as e:
        print('指定的文件无法打开.')
    except IOError as e:
        print('读写文件时出现错误.')
    print('程序执行结束.')

if __name__ == '__main__':
    main()

在上面的例子中,我们使用open()函数读取了一张图片,然后使用read()方法将图片数据读入到内存中,最后使用open()函数将图片数据写入到了另一个二进制文件中。

读写JSON文件

在Python中,我们可以将字典、列表等数据以JSON格式保存到文件中。JSON是一种轻量级的数据交换格式,易于阅读和编写。本文将介绍如何使用Python的json模块读写JSON文件。

JSON简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它是基于JavaScript语言的一个子集,但是它采用了类似于C语言家族的语法。JSON的数据格式是独立于任何编程语言的,因此它很容易被不同的程序和平台使用和解析。JSON格式的数据是一个字符串,它表示了一个结构化的数据对象。

Python中的JSON处理

Python中的json模块可以将Python对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为Python对象。主要有以下四个函数:

  • json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw):将Python对象obj以JSON格式保存到文件fp中。
  • json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw):将Python对象obj以JSON格式的字符串返回。
  • json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):从文件fp中读取JSON格式的数据,并将其转换为Python对象。
  • json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):将JSON格式的字符串s转换为Python对象。

示例

下面是一个演示如何将字典保存为JSON格式的文件的示例代码:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York",
    "pets": ["dog", "cat"]
}

with open("data.json", "w") as f:
    json.dump(data, f)

上述代码将字典data保存为名为data.json的文件。

下面是一个演示如何从JSON格式的文件中读取数据并转换为Python对象的示例代码:

import json

with open("data.json", "r") as f:
    data = json.load(f)

print(data)

上述代码将从名为data.json的文件中读取数据,并将其转换为Python对象。

总结

本文介绍了如何使用Python的json模块读写JSON文件。在Python中,我们可以使用json.dump()json.load()函数将Python对象以JSON格式保存到文件中和从JSON格式的文件中读取数据并转换为Python对象。JSON是一种轻量级的数据交换格式,易于阅读和编写,因此在网络API和文件交换等场景中得到了广泛的应用。