Python编程从入门到实践第十章:文件和异常

本文介绍如何使用Python进行文件读写操作,包括使用open()函数打开文件、利用with关键字确保文件正确关闭、通过read()方法读取文件内容以及不同模式下写入文件的方法。还介绍了在文件操作过程中可能出现的异常情况。

文件和异常

从文件中读取数据

  • 1.函数open()
    • 要以任何方式使用文件,都得先打开文件,这样才能访问它.
    • 接受一个参数:要打开文件的名称.
    • 返回一个表示文件的对象.Python将这个对象存储在后面要使用的变量中.
  • 2.with关键字 :在不需要使用文件时将其关闭,让Python在合适的时候自动关闭文件
    • 注:也能使用close()函数,但使用close()函数可能无法准确把握文件关闭的时间,而导致错误
  • 3.read():读取这个文件的全部内容
  • 注意: 读取文本文件时,Python将其中所有的文本文件都解读为字符串。如果你读取的是数字,并要将其作为数值使用,需要进行类型转换

写入文件

  • 调用open()函数提供了两个实参。
    • 第一个实参也是要打开的文件名称
    • 第二个实参告诉Python我们要以哪种模式打开文件“
      • r:读取模式
      • w:写入模式
      • a:附加模式
      • r+:读取和写入模式
      • 省略:默认只读打开文件
  • 如果要写入的文件不存在,函数open()将自动创建它。
    • 注意:以写入模式('w')打开文件时,如果指定的文件已经存在,Python将在返回文件对象前清空该文件
  • 如果要给文件添加附加内容,而不是覆盖原有的内容,可以附加模式打开文件。你添加的每一行都将添加在末尾

异常

存储数据


Python编程:从入门实践第十章主要围绕文件异常展开,重要知识点如下: ### 文件操作 - **文件打开与关闭**:使用`with open(filename)`的形式打开文件,在不需要访问文件后会自动将其关闭。也可以使用`open()``close()`来打开关闭文件,但如果程序存在bug,导致`close()`语句未执行,文件将不会关闭,可能导致数据丢失或受损[^2]。 ```python # 使用 with 语句打开文件 with open('example.txt') as file: content = file.read() print(content) ``` - **文件读取**:可以使用方法`.read()`读取文件的全部内容,并将其作为字符串存储在变量中。也可以逐行读取文件内容[^2]。 ```python # 读取整个文件内容 with open('example.txt') as file: content = file.read() print(content) # 逐行读取文件内容 with open('example.txt') as file: for line in file: print(line.rstrip()) ``` - **文件路径**:要让Python打开不与程序文件位于同一个目录中的文件,需要提供文件路径。在Windows系统中,在文件路径中使用反斜杠`\`,但通常建议使用双反斜杠`\\`或原始字符串(在字符串前加`r`);在LinuxmacOS系统中使用斜杠`/`[^2]。 ```python # Windows 系统使用原始字符串 file_path = r'C:\Users\username\Documents\example.txt' with open(file_path) as file: content = file.read() print(content) # Linux 或 macOS 系统 file_path = '/home/username/Documents/example.txt' with open(file_path) as file: content = file.read() print(content) ``` - **文件打开模式**:打开文件时,可指定读取模式`'r'`、写入模式`'w'`、附加模式`'a'`或让你能够读取写入文件的模式`'r+'`。如果省略了模式实参,Python将以默认的只读模式打开文件。写入模式会覆盖文件原有内容,附加模式不会覆盖文件原有内容,只添加内容。要让每个字符串都单独占一行,需要在`write()`语句中包含换行符[^2]。 ```python # 写入模式 with open('programming.txt', 'w') as file: file.write("I love programming.\n") # 附加模式 with open('programming.txt', 'a') as file: file.write("I also love Python.\n") ``` ### 异常处理 - **`try-except-else`代码块**:使用`try-except-else`代码块处理异常。`try`代码块中放置可能引发异常的代码,`except`代码块用于捕获并处理特定类型的异常,`else`代码块在`try`代码块没有引发异常时执行[^2]。 ```python try: num1 = int(input("请输入第一个数字:")) num2 = int(input("请输入第二个数字:")) result = num1 / num2 except ValueError: print("输入的不是有效的数字,请输入整数。") except ZeroDivisionError: print("不能除以零。") else: print(f"{num1} 除以 {num2} 的结果是:{result}") ``` - **`pass`语句**:可使用`pass`语句让程序在出现异常时不做任何处理,即“一声不吭”[^2]。 ```python try: file = open('nonexistent_file.txt') except FileNotFoundError: pass ``` ### JSON数据处理 - **存储数据**:使用`json.dump()`将数据存储为JSON格式文件[^2]。 ```python import json numbers = [1, 2, 3, 4, 5] filename = 'numbers.json' with open(filename, 'w') as file: json.dump(numbers, file) ``` - **读取数据**:使用`json.load()`读取JSON文件中的数据[^2]。 ```python import json filename = 'numbers.json' with open(filename) as file: numbers = json.load(file) print(numbers) ``` ### 代码重构 重构是指对代码进行改进,让代码更清晰、更易于理解、更容易扩展[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值