一、文件操作基础
(一)文件操作的重要性与应用场景
在Python编程中,文件操作至关重要。无论是处理配置文件、存储程序运行结果,还是读取数据集进行数据分析等,都离不开对文件的操作。例如,在数据分析项目中,需要从外部文件中读取大量的数据进行处理和分析;在Web开发中,可能需要读取和写入配置文件来设置服务器参数。
(二)文件的概念与打开方式
- 文件的定义文件是存储在外部存储介质(如硬盘、U盘等)上的数据集合。在Python中,我们可以通过相应的函数和方法来操作这些文件。
- 使用
open()函数打开文件,其基本语法为file_object = open(file_name, mode)。 - 其中
file_name是要打开的文件名(可以包含路径),mode是打开文件的模式,常见的模式有:
file = open('example.txt', 'r')
- `'w'`:写入模式,如果文件存在则覆盖原有内容,如果文件不存在则创建新文件。例如:
file = open('new_file.txt', 'w')
- `'a'`:追加模式,在文件末尾添加内容,如果文件不存在则创建新文件。例如:
file = open('log.txt', 'a')
二、文件读取
(一)读取整个文件
- 可以使用
read()方法读取整个文件内容。例如,有一个名为test.txt的文件:
with open('test.txt', 'r') as file: content = file.read() print(content)
- 也可以使用
readline()方法逐行读取文件,每次读取一行:
with open('test.txt', 'r') as file: line = file.readline()while line: print(line) line = file.readline()
- 还可以使用
readlines()方法将文件内容按行读取到一个列表中:
with open('test.txt', 'r') as file: lines = file.readlines()for line in lines: print(line)
(二)文件路径设置
- 在Python中,文件路径可以是相对路径或绝对路径。
- 相对路径相对路径是相对于当前工作目录的路径。例如,如果当前工作目录下有一个
data文件夹,里面有一个data.txt文件,那么在Python中可以这样读取:
with open('data/data.txt', 'r') as file: content = file.read() print(content)
- 绝对路径绝对路径是从文件系统的根目录开始的完整路径。例如,在Windows系统中,绝对路径可能是
C:\Users\username\Documents\file.txt,在Python中使用绝对路径打开文件:
import os# 假设这是一个Windows系统下的绝对路径path = r'C:\Users\username\Documents\file.txt'with open(path, 'r') as file: content = file.read() print(content)
(三)逐行读取
- 除了上面提到的
readline()方法,还可以使用for循环直接逐行读取文件,这是一种更简洁的方式:
with open('test.txt', 'r') as file:for line in file: print(line)
(四)创建包含文件各行内容的列表
- 如前面提到的
readlines()方法可以实现这一功能。以下是一个示例:
with open('test.txt', 'r') as file: lines_list = file.readlines() print(lines_list)
(五)使用文件的内容
- 假设
test.txt文件中存储了一些数字,每行一个,我们可以读取这些数字并进行计算。例如:
total = 0with open('test.txt', 'r') as file:for line in file: number = int(line.strip()) total += number print(total)
(六)处理大型文件
- 当处理包含一百万位的大型文件时,直接将整个文件内容读取到内存中可能会导致内存不足。可以采用分块读取的方法。例如,假设我们有一个大型文本文件
large_file.txt:
block_size = 1024total_sum = 0with open('large_file.txt', 'r') as file:whileTrue: block = file.read(block_size)ifnot block:break# 在这里可以对读取的块进行处理,例如统计字符数量等 total_sum += len(block) print(total_sum)
(七)圆周率值中包含生日吗
- 假设我们有一个包含圆周率值的大型文件
pi.txt,我们的生日是0305(格式为月日),可以这样查找:
with open('pi.txt', 'r') as file: pi_content = file.read()if'0305'in pi_content: print("圆周率值中包含你的生日!")else: print("圆周率值中不包含你的生日。")
三、文件写入
(一)写入空文件
- 当使用
'w'模式打开一个不存在的文件时,Python会创建一个新文件并允许写入内容。例如:
with open('new_text.txt', 'w') as file: file.write("This is a new file.")
(二)写入多行
- 可以使用
write()方法多次调用或者使用字符串拼接后写入。例如:
with open('multi_lines.txt', 'w') as file: file.write("Line 1\n") file.write("Line 2\n") file.write("Line 3\n")
或者
lines = ["Line A\n", "Line B\n", "Line C\n"]with open('multi_lines_2.txt', 'w') as file: file.writelines(lines)
(三)附加到文件
with open('log.txt', 'a') as file: file.write("This is an additional log entry.")