摘要:本文围绕Python中的文件操作与IO展开,深入探讨文本与二进制文件的处理方式。详细介绍了
with open()
语句进行安全读写文件的机制,以及json
模块在处理配置文件和csv
模块在读写表格数据方面的应用。通过日志分析程序案例,展示如何运用文件操作技能统计访问量前10的IP。结合概念讲解、代码示例、练习题及答案,为读者提供全面且深入的Python文件操作知识体系,助力读者提升实际编程能力。
文章目录
【Python基础教程】第七章:文件操作与IO
关键词:Python;文件操作;IO;文本文件;二进制文件;with open()
;json
模块;csv
模块;日志分析
一、引言
在Python编程中,文件操作与IO(输入/输出)是至关重要的技能。无论是读取配置文件、处理数据文件,还是将程序结果保存到文件中,都离不开文件操作。Python提供了丰富的文件操作功能,能够处理文本文件和二进制文件,满足不同场景下的数据读写需求。本章将详细介绍Python中文件操作的基本概念、常用方法和模块,通过实际案例和练习题帮助读者掌握文件操作的核心技能。
二、文本与二进制文件处理概述
2.1 文本文件与二进制文件的区别
- 文本文件:以字符形式存储数据,通常使用特定的字符编码(如UTF - 8、GBK等)将字符转换为字节序列进行存储。文本文件可以使用文本编辑器直接打开查看和编辑,内容可读性强。常见的文本文件格式有
.txt
、.py
、.html
等。 - 二进制文件:以二进制形式存储数据,不依赖于特定的字符编码。二进制文件包含的数据可以是图像、音频、视频等,无法直接使用文本编辑器查看,需要特定的程序进行解析和处理。常见的二进制文件格式有
.jpg
、.mp3
、.exe
等。
2.2 文件操作的基本流程
在Python中,文件操作的基本流程通常包括以下几个步骤:
- 打开文件:使用
open()
函数打开指定的文件,并指定打开模式(如只读、写入、追加等)。 - 读写文件:根据打开模式,对文件进行读取或写入操作。
- 关闭文件:使用
close()
方法关闭文件,释放系统资源。
三、with open()
安全读写文件
3.1 open()
函数的基本用法
open()
函数用于打开文件,其基本语法如下:
file = open(file_path, mode='r', encoding=None)
file_path
:文件的路径,可以是相对路径或绝对路径。mode
:打开模式,常见的模式有:'r'
:只读模式(默认),用于读取文件内容。'w'
:写入模式,用于创建新文件或覆盖原有文件内容。'a'
:追加模式,用于在文件末尾追加内容。'b'
:二进制模式,可与其他模式组合使用,如'rb'
表示以二进制只读模式打开文件。'+'
:读写模式,可与其他模式组合使用,如'r+'
表示以读写模式打开文件。
encoding
:文件的字符编码,如'utf - 8'
、'gbk'
等,在处理文本文件时需要指定合适的编码。
3.2 with open()
语句的优势
在使用open()
函数打开文件后,需要手动调用close()
方法关闭文件。如果在文件操作过程中出现异常,可能会导致文件无法正常关闭,从而造成资源泄漏。为了避免这种情况,可以使用with open()
语句,它会自动处理文件的打开和关闭操作,即使出现异常也能确保文件被正确关闭。示例代码如下:
with open('example.txt', 'r', encoding='utf - 8') as file:
content = file.read()
print(content)
3.3 文本文件的读写操作
3.3.1 读取文本文件
read()
方法:读取整个文件内容,返回一个字符串。
with open('example.txt', 'r', encoding='utf - 8') as file:
content = file.read()
print(content)
readline()
方法:逐行读取文件内容,每次返回一行字符串。
with open('example.txt', 'r', encoding='utf - 8') as file:
line = file.readline()
while line:
print(line.strip())
line = file.readline()
readlines()
方法:读取文件的所有行,返回一个包含每行内容的列表。
with open('example.txt', 'r', encoding='utf - 8') as file:
lines = file.readlines()
for line in lines:
print(line.strip())
3.3.2 写入文本文件
write()
方法:将字符串写入文件。
with open('example.txt', 'w', encoding='utf - 8') as file:
file.write('Hello, World!\n')
file.write('This is a test.')
writelines()
方法:将一个字符串列表写入文件。
lines = ['Line 1\n', 'Line 2\n', 'Line 3']
with open('example.txt', 'w', encoding='utf - 8') as file:
file.writelines(lines)
3.4 二进制文件的读写操作
3.4.1 读取二进制文件
读取二进制文件时,需要以二进制模式('rb'
)打开文件。
with open('example.jpg', 'rb') as file:
data = file.read()
3.4.2 写入二进制文件
写入二进制文件时,同样需要以二进制模式('wb'
)打开文件。
with open('new_example.jpg', 'wb') as file:
file.write(data)
四、json
模块处理配置文件
4.1 JSON数据格式简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。JSON数据由键值对组成,支持多种数据类型,如字符串、数字、布尔值、数组和对象。示例JSON数据如下:
{
"name": "John",
"age": 30,
"hobbies": ["reading", "running"],
"is_student": false
}
4.2 json
模块的基本用法
Python的json
模块提供了处理JSON数据的功能,主要包括以下几个方法:
json.dumps()
:将Python对象转换为JSON字符串。
import json
data = {
"name": "John",
"age": 30,
"hobbies": ["reading", "running"],
"is_student": false
}
json_str = json.dumps(data, indent = 4)
print(json_str)
json.loads()
:将JSON字符串转换为Python对象。
json_str = '{"name": "John", "age": 30, "hobbies": ["reading", "running"], "is_student": false}'
data = json.loads(json_str)
print(