13 Python 进阶到上手实战教程 - 小节文件的高级操作

13 Python 进阶到上手实战教程 - 小节文件的高级操作

1. 文件的创建与打开

在 Python 中,可以使用内置的 open() 函数来创建和打开文件。其基本语法如下:

1
file = open('file.txt', 'r')  # 以只读模式打开文件

1.1 不同模式的介绍

  • r: 只读模式,文件必须存在。
  • w: 只写模式,如果文件存在会被覆盖,不存在则创建文件。
  • a: 追加模式,如果文件存在,内容会被添加到文件末尾,不存在则创建文件。
  • b: 二进制模式,通常与其他模式一起使用,例如 rbwb
  • +: 读写模式,允许在文件中读写。

示例代码

1
2
3
4
# 创建并写入一个文件
with open('example.txt', 'w') as file:
file.write('Hello, World!\n')
file.write('Welcome to Python file operations.\n')

2. 文件读取

2.1 逐行读取

可以使用 readline()readlines() 方法读取文件的内容。

示例代码

1
2
3
with open('example.txt', 'r') as file:
for line in file:
print(line.strip()) # 使用 strip() 去掉行末换行符

2.2 读取全部内容

使用 read() 方法可以一次性读取整个文件的内容。

示例代码

1
2
3
with open('example.txt', 'r') as file:
content = file.read()
print(content)

3. 文件写入

3.1 写入字符串

可以简单地使用 write() 方法将字符串写入文件。

示例代码

1
2
with open('output.txt', 'w') as file:
file.write('This is a new line.\n')

3.2 写入多个字符串

可以使用 writelines() 方法将一个字符串列表写入文件。

示例代码

1
2
3
lines = ['First line.\n', 'Second line.\n', 'Third line.\n']
with open('output.txt', 'a') as file: # 以追加模式打开
file.writelines(lines)

4. 文件的定位与移动

使用 seek() 方法可以移动文件指针。

4.1 移动指针

1
2
3
4
5
with open('example.txt', 'r') as file:
file.seek(0) # 移动到文件开头
print(file.readline()) # 读取第一行
file.seek(0, 2) # 移动到文件末尾
file.write('Adding a new line at the end.\n')

5. 文件的删除与重命名

使用 os 模块可以轻松地删除和重命名文件。

5.1 删除文件

1
2
3
4
5
6
7
import os

if os.path.exists('output.txt'):
os.remove('output.txt') # 删除文件
print('File deleted successfully')
else:
print('The file does not exist')

5.2 重命名文件

1
2
3
import os

os.rename('example.txt', 'example_renamed.txt') # 重命名文件

6. 文件的上下文管理

使用 with 语句可以确保在操作完成后自动关闭文件,这是一种良好的实践。

示例代码

1
2
3
with open('example.txt', 'r') as file:
data = file.read()
# 文件会在这里自动关闭,无需手动调用 file.close()

7. 处理异常

在文件操作中,处理异常是极其重要的。使用 try...except 语句来捕获异常。

示例代码

1
2
3
4
5
6
7
try:
with open('nonexistent_file.txt', 'r') as file:
data = file.read()
except FileNotFoundError:
print('The file was not found.')
except Exception as e:
print(f'An error occurred: {e}')

8. 文件编码

在读取和写入中文或其他非ASCII字符的文件时,建议指定文件编码。

示例代码

1
2
3
4
5
6
with open('chinese.txt', 'w', encoding='utf-8') as file:
file.write('中文内容\n')

with open('chinese.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)

9. 小节总结

在本小节中,我们学习了如何在 Python 中进行高级的文件操作,包括文件的创建、读取、写入、删除及异常处理。掌握这些内容将为我们在实际项目中处理文件打下坚实的基础。

赋值运算符

赋值运算符

在 Python 中,赋值运算符是我们非常常用的一类运算符,它用于将右边的值赋给左边的变量。接下来,我们将详细介绍赋值运算符的基本用法以及其相关特性。

1. 基本赋值运算符 =

最基本的赋值运算符是 =。使用该运算符可以将一个值存储到一个变量中。

示例:

1
2
3
4
5
# 创建一个变量 x,并赋值为 5
x = 5

# 打印变量 x 的值
print(x) # 输出: 5

在这个例子中,5 被赋值给变量 x,所以 x 现在的值是 5

2. 复合赋值运算符

Python 还提供了一些复合赋值运算符,可以在执行计算的同时进行赋值,常用的复合赋值运算符有:+=-=*=/= 等。

2.1 加法赋值运算符 +=

+= 运算符将右边的值加到左边变量的当前值中,然后将结果赋值给左边的变量。

示例:

1
2
3
4
5
6
7
8
# 初始赋值
x = 5

# 使用 += 运算符
x += 2 # 相当于 x = x + 2

# 打印 x 的值
print(x) # 输出: 7

2.2 减法赋值运算符 -=

-= 运算符将右边的值从左边变量的当前值中减去,并将结果赋值给左边的变量。

示例:

1
2
3
x = 5
x -= 3 # 相当于 x = x - 3
print(x) # 输出: 2

2.3 乘法赋值运算符 *=

*= 运算符将右边的值与左边变量的当前值相乘,并将结果赋值给左边的变量。

示例:

1
2
3
x = 4
x *= 2 # 相当于 x = x * 2
print(x) # 输出: 8

2.4 除法赋值运算符 /=

/= 运算符将左边变量的值除以右边的值,并将结果赋值给左边的变量。

示例:

1
2
3
x = 8
x /= 4 # 相当于 x = x / 4
print(x) # 输出: 2.0

3. 其他赋值方式

除了上述提到的赋值运算符,还有一些其他类型的赋值运算符,比如取模、幂运算等。

3.1 取模赋值运算符 %=

%= 运算符将左边变量的值与右边的值取模,并将结果赋值给左边的变量。

示例:

1
2
3
x = 10
x %= 3 # 相当于 x = x % 3
print(x) # 输出: 1

3.2 幂赋值运算符 **=

**= 运算符将左边变量的值提升到右边的幂次,并将结果赋值给左边的变量。

示例:

1
2
3
x = 2
x **= 3 # 相当于 x = x ** 3
print(x) # 输出: 8

4. 小结

赋值运算符是 Python 编程中的基础知识之一,熟练掌握赋值运算符的用法将帮助你更有效地使用 Python 进行编程。以下是一些常用的赋值运算符总结:

  • 基本赋值 =
  • 加法赋值 +=
  • 减法赋值 -=
  • 乘法赋值 *=
  • 除法赋值 /=
  • 取模赋值 %=
  • 幂赋值 **=

通过学习这些基本的赋值运算符,你可以更灵活地操作变量和数据,让你的代码更加简洁和高效。

CSV、JSON 与 XML 的读写

CSV、JSON 与 XML 的读写

在这一小节中,我们将学习如何使用 Python 处理常见的数据格式:CSVJSONXML。我们将详细探讨如何读写这些格式,并结合实际代码示例以加深理解。

一、CSV 的读写

1. 什么是 CSV?

CSV(Comma-Separated Values,逗号分隔值)是一种常用的简单文件格式,用于存储表格数据。每一行代表一条记录,字段之间通常用逗号分隔。

2. 读 CSV 文件

使用 csv 模块可以方便地读取 CSV 文件。以下是一个示例代码:

1
2
3
4
5
6
7
import csv

# 读取 CSV 文件
with open('data.csv', mode='r', newline='', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row) # 打印每一行数据

3. 写 CSV 文件

同样的,使用 csv 模块可以方便地写入 CSV 文件。以下是一个示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
import csv

# 写入 CSV 文件
data = [
['Name', 'Age', 'City'],
['Alice', 30, 'New York'],
['Bob', 25, 'Los Angeles'],
]

with open('output.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(data) # 写入多行数据

二、JSON 的读写

1. 什么是 JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人类阅读和编写,同时也便于机器解析和生成。它通常用于网络数据的传输。

2. 读 JSON 文件

使用 json 模块可以方便地读取 JSON 文件。以下是一个示例代码:

1
2
3
4
5
6
import json

# 读取 JSON 文件
with open('data.json', 'r', encoding='utf-8') as file:
data = json.load(file)
print(data) # 打印解析后的数据

3. 写 JSON 文件

同样的,使用 json 模块可以方便地写入 JSON 文件。以下是一个示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
import json

# 要写入的数据
data = {
'name': 'Alice',
'age': 30,
'city': 'New York'
}

# 写入 JSON 文件
with open('output.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4) # 确保中文正常显示

三、XML 的读写

1. 什么是 XML?

XML(eXtensible Markup Language)是一种可扩展标记语言,用于存储和传输数据。XML 通过标记来描述数据的结构。

2. 读 XML 文件

使用 xml.etree.ElementTree 模块可以方便地读取 XML 文件。以下是一个示例代码:

1
2
3
4
5
6
7
8
9
import xml.etree.ElementTree as ET

# 读取 XML 文件
tree = ET.parse('data.xml')
root = tree.getroot()

# 遍历 XML 元素
for child in root:
print(child.tag, child.attrib) # 打印标签和属性

3. 写 XML 文件

同样的,使用 xml.etree.ElementTree 模块可以方便地写入 XML 文件。以下是一个示例代码:

1
2
3
4
5
6
7
8
9
10
11
import xml.etree.ElementTree as ET

# 创建 XML 树
root = ET.Element('users')

user1 = ET.SubElement(root, 'user', attrib={'name': 'Alice', 'age': '30'})
user2 = ET.SubElement(root, 'user', attrib={'name': 'Bob', 'age': '25'})

# 写入 XML 文件
tree = ET.ElementTree(root)
tree.write('output.xml', encoding='utf-8', xml_declaration=True)

小结

在本节中,我们学习了如何使用 Python 的内置模块处理 CSVJSONXML 文件。我们通过示例代码展示了读取和写入每种格式的基本用法。熟练掌握这些技巧将对数据处理、数据交换等工作非常有帮助。