news 2026/2/8 22:04:02

11.Python文件操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
11.Python文件操作

在Python编程中,文件操作是最基础且重要的功能之一。无论是处理配置文件、读取数据文件,还是写入日志,都离不开文件操作。本文将通过实际代码示例,全面讲解Python文件操作的核心知识点。

一、文件操作

1. 文件打开与关闭
1.1 打开文件

在Python中,你可以使用open()函数来打开文件。

以下是一个简单的例子:

# 打开文件(默认为只读模式) file_path = 'example.txt' with open(file_path, 'r') as file: # 执行文件操作,例如读取文件内容 file_content = file.read() print(file_content) # 文件在with块结束后会自动关闭,无需显式关闭文件

在上述示例中:

  • 'example.txt'是文件的路径和名称,你可以根据实际情况修改为你想要打开的文件。
  • 'r'表示只读模式。如果你想要写入文件,可以使用'w'模式,如果想要追加内容,可以使用'a'模式等。
  • with open(...) as file: 是使用上下文管理器的方式,确保文件在使用后被正确关闭,即使在处理文件时发生异常也能保证关闭。
1.2 关闭文件

在 Python 中关闭文件有两种主要的方法:

1.2.1 使用 with 语句

with语句是一种上下文管理器,当它的代码块执行完毕时,会自动关闭文件。这是推荐的方式,因为它确保文件在使用完毕后被正确关闭,即使发生异常也能保证关闭。

file_path = 'example.txt' with open(file_path, 'r') as file: # 执行文件操作,例如读取文件内容 file_content = file.read() print(file_content) # 文件在这里已经被自动关闭

1.2.2 使用 close() 方法:

你可以显式调用文件对象的close()方法来关闭文件。这种方法适用于一些特殊情况,但相对来说不如with语句简洁和安全。

file_path = 'example.txt' file = open(file_path, 'r') try: # 执行文件操作,例如读取文件内容 file_content = file.read() print(file_content) finally: file.close()

在使用with语句时,不需要显式调用close()方法。如果你在代码中打开了文件而没有使用with,请确保在适当的地方调用close()以关闭文件,以避免资源泄漏。

2. 访问模式及说明

访问模式

说明

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

w

打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

w+

打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a+

打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果改文件不存在,创建新文件用于读写。

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头

wb+

以二进制格式打开一个文件用于读写。如果改文件已存在则会覆盖。如果改文件不存在,创建新文件。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果改文件不存在,创建新文件用于读写。

二、文件读写

1. 写数据(write)

写入数据通常涉及将信息保存到文件、数据库或其他持久性存储介质中。以下是一些常见的数据写入场景的示例:

1.1 写入文本文件

使用内置的open函数来打开文件并写入内容。确保使用适当的模式(例如,'w'表示写入)。

file_path = 'example.txt' # 写入文件 with open(file_path, 'w') as file: file.write("Hello, this is some data.")

1.2 写入CSV文件

使用csv模块来写入CSV格式的文件。

import csv csv_file_path = 'example.csv' data = [['Name', 'Age', 'Occupation'], ['John Doe', 30, 'Engineer'], ['Jane Smith', 25, 'Designer']] with open(csv_file_path, 'w', newline='') as csvfile: csv_writer = csv.writer(csvfile) csv_writer.writerows(data)

1.3 写入JSON文件

使用内置的json模块来写入JSON格式的文件。

import json json_file_path = 'example.json' data = {"name": "John Doe", "age": 30, "occupation": "Engineer"} with open(json_file_path, 'w') as jsonfile: json.dump(data, jsonfile)

1.4 写入数据库

使用数据库连接库(如sqlite3、mysql-connector-python等)与相应的数据库进行交互。

import sqlite3 # 连接到SQLite数据库(假设有一个名为 example.db 的数据库) conn = sqlite3.connect('example.db') # 创建一个游标对象 cursor = conn.cursor() # 执行SQL插入语句 cursor.execute("INSERT INTO users (name, age, occupation) VALUES (?, ?, ?)", ('John Doe', 30, 'Engineer')) # 提交更改 conn.commit() # 关闭连接 conn.close()
2. 读数据(read)

读取数据通常涉及从文件、数据库或其他存储介质中检索信息。以下是一些读取数据的常见示例:

2.1 读取文本文件

使用内置的open函数来打开文件并读取内容。

file_path = 'example.txt' # 读取文件 with open(file_path, 'r') as file: data = file.read() print(data)

2.2 读取CSV文件

使用csv模块来读取CSV格式的文件。

import csv csv_file_path = 'example.csv' # 读取CSV文件 with open(csv_file_path, 'r') as csvfile: csv_reader = csv.reader(csvfile) for row in csv_reader: print(row)

2.3 读取JSON文件

使用内置的json模块来读取JSON格式的文件。

import json json_file_path = 'example.json' # 读取JSON文件 with open(json_file_path, 'r') as jsonfile: data = json.load(jsonfile) print(data)

2.4 从数据库中读取数据

使用数据库连接库(如sqlite3、mysql-connector-python等)与相应的数据库进行交互。

import sqlite3 # 连接到SQLite数据库(假设有一个名为 example.db 的数据库) conn = sqlite3.connect('example.db') # 创建一个游标对象 cursor = conn.cursor() # 执行SQL查询语句 cursor.execute("SELECT * FROM users") # 检索所有行 rows = cursor.fetchall() # 打印每一行 for row in rows: print(row) # 关闭连接 conn.close()
2. 读数据(readlines)

readlines是 Python 中用于读取文件的方法之一,它用于逐行读取文件内容,并将每一行作为字符串存储在一个列表中。下面是对readlines方法的详细解释:

使用 readlines 方法的基本语法

代码语言:javascript

AI代码解释

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

解释:

  • open('file.txt', 'r'): 打开文件'file.txt'以供读取。第一个参数是文件名,第二个参数是打开文件的模式。'r'表示只读模式。
  • with ... as ...: 使用with语句可以确保在读取完成后自动关闭文件,不需要显式调用file.close()
  • lines = file.readlines():readlines方法用于读取文件的所有行,并将每一行作为一个字符串存储在列表lines中。
  • • 每个列表元素对应文件中的一行文本。你可以使用列表索引来访问特定行,例如lines[0]表示文件的第一行。

例子:假设 ‘file.txt’ 包含以下内容:

代码语言:javascript

AI代码解释

Hello, this is line 1. This is line 2. And this is line 3.

使用 readlines 后:

with open('file.txt', 'r') as file: lines = file.readlines() # lines 现在是一个包含每一行文本的列表 print(lines) # 输出: # ['Hello, this is line 1.\n', 'This is line 2.\n', 'And this is line 3.\n'] # 访问特定行 print(lines[0].strip()) # 输出:Hello, this is line 1.

注意事项:

  • • 每一行的末尾都包含换行符\n,你可以使用strip()方法去除这些额外的空白字符。
  • readlines方法适用于处理包含多行文本的文件,但对于大型文件,可能需要考虑逐行读取而不是将整个文件加载到内存中。这可以通过循环遍历文件对象来实现,而不是使用readlines
3. 读数据(readline)

readline 是 Python 中用于读取文件的方法之一,它用于逐行读取文件内容,并返回文件中的一行作为字符串。以下是对 readline 方法的详细解释: 使用 readline 方法的基本语法

with open('file.txt', 'r') as file: line = file.readline()

解释:

  • open('file.txt', 'r'): 打开文件'file.txt'以供读取。第一个参数是文件名,第二个参数是打开文件的模式。'r'表示只读模式。
  • with ... as ...: 使用with语句可以确保在读取完成后自动关闭文件,不需要显式调用file.close()
  • line = file.readline():readline方法用于读取文件的一行,并将该行作为一个字符串存储在变量line中。

例子:假设 ‘file.txt’ 包含以下内容:

Hello, this is line 1. This is line 2. And this is line 3.

使用 readline 后:

with open('file.txt', 'r') as file: line1 = file.readline() line2 = file.readline() line3 = file.readline() print(line1) # 输出:Hello, this is line 1. print(line2) # 输出:This is line 2. print(line3) # 输出:And this is line 3.

注意事项:

  • • 每个readline调用都会读取文件的下一行。
  • • 返回的字符串包含行末尾的换行符\n。如果不需要换行符,可以使用strip()方法去除它。
  • • 当文件读取完毕后,readline将返回空字符串 ‘’,因此可以在循环中使用while line != ''来逐行读取整个文件。

循环读取整个文件:

with open('file.txt', 'r') as file: line = file.readline() while line != '': print(line.strip()) # 去除换行符 line = file.readline()

这个循环将逐行读取整个文件,直到文件末尾。

4. readlines 和 readline的区别

readlinesreadline是 Python 中用于读取文件的两种不同方法,它们之间有一些重要的区别:

4.1 readlines 方法:

  • • 返回类型:readlines方法返回一个包含文件所有行的列表,其中每个元素都是文件中的一行文本字符串。
  • • 使用情况: 适用于处理包含多行文本的文件,可以一次性将整个文件加载到内存中。这种方法适用于文件较小,可以完全装入内存的情况。
  • • 例子:
with open('file.txt', 'r') as file: lines = file.readlines()

4.2 readline 方法:

  • • 返回类型:readline方法每次调用只返回文件中的一行作为字符串。如果再次调用,将返回下一行。当文件读取完毕后,返回空字符串 ‘’。
  • • 使用情况: 适用于逐行处理大型文件,可以有效地降低内存使用。因为它一次只读取一行,可以在循环中逐行处理文件,而不必将整个文件加载到内存中。
  • • 例子:
with open('file.txt', 'r') as file: line = file.readline() while line != '': print(line.strip()) # 去除换行符 line = file.readline()

4.3 区别总结:

  • readlines一次性读取整个文件的所有行,并返回一个包含所有行的列表。
  • readline逐行读取文件,每次调用返回文件中的一行,适用于处理大型文件,减少内存占用。
  • readlines返回包含换行符的每一行,而readline返回单独的行,需要手动去除换行符。

选择使用哪个方法取决于文件的大小和处理需求。如果文件较小,可以完全装入内存,使用readlines;如果文件较大,可以逐行处理,使用readline

三、文件的相关操作

1. 文件重命名

Python 文件重命名是文件管理中的一个基本操作,可以通过 Python 的内置库来实现。以下是一个超详细的入门指南,介绍如何使用 Python 重命名文件:

1.2 导入必要的库

首先,您需要导入 Python 的os库,它提供了许多与操作系统交互的函数。

import os

1.2 准备文件列表

要重命名文件,您需要先列出指定目录中的所有文件。可以使用os.listdir()函数来获取目录中的文件列表。

# 列出指定目录中的所有文件和文件夹 files = os.listdir('path_to_directory')

1.3 遍历文件列表

接着,您需要遍历文件列表,对每一个文件进行重命名。

for file in files: # 获取文件的完整路径 full_path = os.path.join('path_to_directory', file) # 检查是否是文件 if os.path.isfile(full_path): # 新的文件名 new_filename = 'new_name' # 重命名操作 os.rename(full_path, os.path.join('path_to_directory', new_filename)) print(f'Renamed {file} to {new_filename}')

1.4 异常处理

在重命名文件时,可能会出现各种异常,例如目标文件已存在、没有足够权限等。为了确保程序的健壮性,应该添加异常处理。

try: for file in files: # ...(上面的代码) except OSError as e: print(f'Error occurred: {e}')

1.5 完整的脚本示例

import os # 指定要重命名文件的目录 directory = 'path_to_directory' # 列出目录中的所有文件 files = os.listdir(directory) # 遍历文件列表并进行重命名 for file in files: if os.path.isfile(os.path.join(directory, file)): # 设定新的文件名 new_filename = 'new_name' # 重命名文件 try: os.rename( os.path.join(directory, file), os.path.join(directory, new_filename) ) print(f'Renamed {file} to {new_filename}') except OSError as e: print(f'Error renaming {file}: {e}')

1.6 注意安全性和效率

在批量重命名文件时,应确保:

  • • 不要同时进行多个重命名操作,以避免潜在的竞争条件。
  • • 确保目标目录存在,避免在重命名时创建不存在的目录。
  • • 考虑到操作系统对文件重命名的限制,例如在 Windows 中,文件名不能超过 255 个字符,而在 Unix/Linux 中则没有这个限制。

1.7 高级用法

对于更复杂的重命名任务,您可以使用正则表达式或者其他文本处理方法来生成新的文件名。

import os import re # 指定目录 directory = 'path_to_directory' # 列出目录中的所有文件 files = os.listdir(directory) # 遍历文件列表并进行重命名 for file in files: if os.path.isfile(os.path.join(directory, file)): # 使用正则表达式匹配文件名模式,并替换为新的模式 new_filename = re.sub(r'\d+', 'new_prefix', file) # 重命名文件 try: os.rename( os.path.join(directory, file), os.path.join(directory, new_filename) ) print(f'Renamed {file} to {new_filename}') except OSError as e: print(f'Error renaming {file}: {e}')

这个脚本会将指定目录中所有以数字开头的文件重命名为新的前缀。

2. 删除文件

在Python中,删除文件是一个相对简单的操作。我们可以使用os库中的os.remove()函数来实现。以下是一个超详细的入门指南,介绍如何使用Python删除文件:

2.1 导入必要的库

首先,您需要导入Python的os库,它提供了许多与操作系统交互的函数。

import os

2.2 准备文件路径

要删除文件,您需要知道要删除的文件的路径。

file_path = 'path_to_file'

2.3 检查文件是否存在

在删除文件之前,最好检查该文件是否存在,以避免错误。

if os.path.isfile(file_path): print(f'File {file_path} exists, proceed to delete.') else: print(f'File {file_path} does not exist, skip deletion.')

**2.4 执行删除操作

如果文件存在,您可以使用os.remove()函数来删除它。

try: os.remove(file_path) print(f'File {file_path} deleted successfully.') except OSError as e: print(f'Error occurred: {e}')

2.5 完整的脚本示例

import os # 指定要删除的文件的目录 file_path = 'path_to_file' # 检查文件是否存在 if os.path.isfile(file_path): print(f'File {file_path} exists, proceed to delete.') else: print(f'File {file_path} does not exist, skip deletion.') # 执行删除操作 try: os.remove(file_path) print(f'File {file_path} deleted successfully.') except OSError as e: print(f'Error occurred: {e}')

2.6 注意安全性和效率

在批量删除文件时,应确保:

  • • 不要同时进行多个删除操作,以避免潜在的竞争条件。
  • • 确保目标目录存在,避免在删除时创建不存在的目录。
  • • 考虑到操作系统对文件删除的操作限制,例如在 Windows 中,文件名不能超过 255 个字符,而在 Unix/Linux 中则没有这个限制。 通过以上步骤,您应该能够掌握如何使用Python删除文件。
3. 创建文件

在Python中,创建文件是一个相对简单的操作。我们可以使用os库中的os.open()函数或者with语句来创建文件。以下是一个超详细的入门指南,介绍如何使用Python创建文件:

3.1 导入必要的库

首先,您需要导入Python的os库,它提供了许多与操作系统交互的函数。

import os

3.2 准备文件路径

要创建文件,您需要知道要创建的文件的路径。

file_path = 'path_to_file'

3.3 检查文件路径是否存在

在创建文件之前,最好检查该文件路径是否存在,以避免覆盖其他文件。

if not os.path.exists(file_path): print(f'File path {file_path} does not exist, proceed to create.') else: print(f'File path {file_path} already exists, skip creation.')

3.4 执行创建操作

如果文件路径不存在,您可以使用os.open()函数来创建文件。

try: with open(file_path, 'w') as f: print(f'File {file_path} created successfully.') except IOError as e: print(f'Error occurred: {e}')

这里,我们使用with语句来确保文件在操作完成后会被正确关闭。'w'参数表示以写入模式打开文件,如果文件不存在,会创建一个新文件。

3.5 完整的脚本示例

import os # 指定要创建的文件的目录 file_path = 'path_to_file' # 检查文件路径是否存在 if not os.path.exists(file_path): print(f'File path {file_path} does not exist, proceed to create.') else: print(f'File path {file_path} already exists, skip creation.') # 执行创建操作 try: with open(file_path, 'w') as f: print(f'File {file_path} created successfully.') except IOError as e: print(f'Error occurred: {e}')

3.6 注意安全性和效率

在创建文件时,应确保:

  • • 拥有创建文件的足够权限。
  • • 避免在内存不足的情况下创建大型文件。 通过以上步骤,您应该能够掌握如何使用Python创建文件。
4. 获取当前目录

在Python中,我们可以使用os库中的os.getcwd()函数来获取当前目录的路径。以下是一个示例:

import os current_directory = os.getcwd() print(f'Current directory is: {current_directory}')

这将会打印出当前Python脚本所在目录的路径。

四、示例

1. 目录.txt自动清洗

1.1 需要在二级标题所在行最前面空4个格子,一级标题不用

1.2 需要在章和节字的后面加上一个空格

1.3 需要在页码前面加上=>符号

# 获取桌面路径 import os import re desktop_path = os.path.join(os.path.expanduser("~"), "Desktop") # 目标文件路径 file_path = os.path.join(desktop_path, "目录.txt") # 打开文件并读取内容 with open(file_path, 'r', encoding='utf-8') as file: lines = file.readlines() modified_lines = [] for line in lines: # 去除空格 line = line.replace(" ", "") if len(line) == 1: continue # 使用正则表达式在'章'或'节'后面添加一个空格,仅在后面没有空格的情况下 line = re.sub(r'(章|节)(?![ ])', r'\1 ', line) # 在小数点后添加空格 line = re.sub(r'(\.\d)', r'\1 ', line) if '章' not in line: # 二级标题添加4个空格 line = ' ' * 4 + line # 匹配并去除最外层的英文括号 pattern_en = r'\(([\d\s]+)\)' line = re.sub(pattern_en, r'\1', line) # 匹配并去除最外层的中文括号及其内部内容(包括除数字和空格以外的字符) pattern = r'(([^)]+))' line = re.sub(pattern, r'\1', line) # 确保每行只有一个 => if '=>' not in line: # 在页码数字前添加 =>(只在行尾) line = re.sub(r'(\d+)$', r'=>\1', line) # 去除中文汉字和'=>整体符号左边的冗余符号 pattern = r'([\u4e00-\u9fff]+)[^\w\s]+=>' line = re.sub(pattern, r'\1=>', line) modified_lines.append(line) # 将修改后的内容写回文件 with open(file_path, 'w', encoding='utf-8') as file: file.writelines(modified_lines) # 读取文件内容 with open(file_path, 'r', encoding='utf-8') as file: content = file.read() print(content)
2. 批量修改文件夹下的文件命名

你可以使用Pythonos模块来实现对文件名的批量修改,结合字符串操作来确保文件名中的规定格式。以下是一个示例代码:

import os # 指定目录路径 directory_path = r'目标文件夹绝对路径' # 获取目录下所有文件名 files = os.listdir(directory_path) # 遍历文件 for file_name in files: # 构建完整的文件路径 file_path = os.path.join(directory_path, file_name) # 检查文件是否是图片文件,并且文件名中包含下划线 if file_name.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')) and '_' in file_name: # 分割文件名,以下划线为界 parts = file_name.split('_') # 确保分割后的第一部分为'00159231127' if parts[0] != '00159231127': # 构建新文件名 new_file_name = '00159231127' + '_' + '_'.join(parts[1:]) # 构建新文件路径 new_file_path = os.path.join(directory_path, new_file_name) # 重命名文件 os.rename(file_path, new_file_path) print(f'Renamed: {file_name} -> {new_file_name}')

在上述代码中:

1.使用os.listdir获取目录下的所有文件名,然后遍历这些文件名。 2.通过os.path.join构建完整的文件路径,确保路径的正确性。 3.检查文件是否是图片文件(以.png, .jpg, .jpeg, .gif结尾的文件),并且文件名中包含下划线。 4.使用split('_')分割文件名,确保分割后的第一部分为'00159231127'。 5.构建新文件名,并使用 os.rename 来重命名文件。

在运行前,请确保备份文件或者在测试环境中运行,以免意外损坏文件。

3. 检测同级目录下是否存在同名文件夹

检测 目标路径 下的文件夹命名前5位是否存在一样的,如果一样打印出来

你可以使用Python来检查指定目录下的文件夹,查找前5位命名相同的文件夹。以下是一个示例代码:

import os # 指定目录路径 directory_path = r'目标路径' # 获取目录下所有文件夹名 folders = [folder for folder in os.listdir(directory_path) if os.path.isdir(os.path.join(directory_path, folder))] # 创建一个空字典,用于存储前5位相同的文件夹名 same_prefix_folders = {} # 遍历文件夹 for folder in folders: # 获取前5位文件夹名 prefix = folder[:5] # 检查前5位文件夹名是否已经在字典中 if prefix in same_prefix_folders: # 将文件夹名添加到对应的键值中 same_prefix_folders[prefix].append(folder) else: # 若字典中没有该前5位文件夹名,则创建键值对 same_prefix_folders[prefix] = [folder] # 输出前5位相同的文件夹名 for prefix, folders in same_prefix_folders.items(): if len(folders) > 1: print(f"前5位为 '{prefix}' 的文件夹有以下重复命名:") print(', '.join(folders))

这段代码执行以下操作:

1.使用os.listdir获取指定目录下的所有文件夹名。 2.然后遍历这些文件夹名,提取前 5 位名称,并将具有相同前缀的文件夹放入一个字典中。 3.最后打印出前 5 位相同的文件夹名。

1. 基础文件读取

1.1 简单文件读取

# 最基本的文件读取方式 f = open('demo.txt') content = f.read() print(content)

这是最基础的文件读取方式,但存在潜在问题:如果文件编码与系统默认编码不匹配,可能会出现乱码。

1.2 循环读取文件内容

# 使用循环逐行读取大文件 f = open('demo.txt') for line in f: print(line)

这种方法适合处理大文件,因为它不会一次性将整个文件加载到内存中,而是逐行读取。

2. 编码处理与乱码解决

2.1 指定文件编码

# 明确指定编码格式,避免乱码 f = open('demo.txt', encoding='utf-8') content = f.read() print(content)

在处理包含中文或其他非ASCII字符的文件时,明确指定编码格式是避免乱码的关键。

2.2 文件关闭的重要性

# 显式关闭文件 f = open('demo.txt') content = f.read() print(content) f.close() # 必须显式关闭文件

文件操作完成后必须关闭文件,释放系统资源。如果忘记关闭文件,可能导致资源泄露。

3. 使用with语句(推荐)

3.1 自动资源管理

# 使用with语句,文件会自动关闭 with open('demo.txt') as f: content = f.read() print(content)

这是Python文件操作的最佳实践。使用with语句可以确保文件在代码块执行完毕后自动关闭,即使发生异常也能正确关闭。

4. 文件打开模式详解

4.1 只读模式(默认)

# 文件必须存在,否则会报错 with open('file.txt', 'r') as f: # 等同于 'rt'(文本模式) content = f.read()

这是最常用的模式,用于读取已存在的文件。

4.2 写入模式

# 如果文件存在会清空内容,不存在则创建 with open('file.txt', 'w') as f: f.write('Hello World')

注意:此模式会覆盖文件原有内容,使用时需谨慎。

4.3 追加模式

# 在文件末尾添加内容,不覆盖原有数据 with open('file.txt', 'a') as f: f.write('\nNew line')

适合日志记录等需要在文件末尾添加内容的场景。

5. 文件系统操作

5.1 目录列表

import os # 列出指定目录中的所有文件和文件夹 files = os.listdir('../filestudy') print(files)

5.2 文件类型检查

# 检查路径是否为文件 if not os.path.isfile('../filestudy'): print('是文件') else: print('不是文件或文件不存在')

6. 实际应用场景

6.1 配置文件读取

# 读取配置文件 config = {} with open('config.ini', 'r', encoding='utf-8') as f: for line in f: if '=' in line: key, value = line.strip().split('=', 1) config[key] = value

6.2 日志记录

# 追加模式记录日志 import datetime with open('app.log', 'a', encoding='utf-8') as log_file: timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') log_file.write(f'[{timestamp}] 程序启动\n')

6.3 大文件处理

# 处理大文件,避免内存溢出 with open('large_file.txt', 'r', encoding='utf-8') as f: for line_number, line in enumerate(f, 1): # 处理每一行数据 processed_line = line.strip() if processed_line: # 跳过空行 print(f'第{line_number}行: {processed_line}')

7. 错误处理与最佳实践

7.1 异常处理

try: with open('nonexistent.txt', 'r') as f: content = f.read() except FileNotFoundError: print("文件不存在") except PermissionError: print("没有文件读取权限") except Exception as e: print(f"读取文件时发生错误: {e}")

7.2 最佳实践总结

  1. 始终使用with语句:确保文件正确关闭

  2. 明确指定编码:避免乱码问题

  3. 处理大文件时使用迭代:避免内存溢出

  4. 添加异常处理:提高程序健壮性

  5. 选择合适的打开模式:根据需求使用r/w/a等模式

8. 扩展知识

8.1 二进制文件操作

# 处理图片、视频等二进制文件 with open('image.jpg', 'rb') as f: binary_data = f.read()

8.2 文件指针操作

with open('file.txt', 'r+') as f: content = f.read() f.seek(0) # 回到文件开头 f.write('新的内容') # 覆盖开头部分
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/8 21:59:26

小程序毕设项目:基于springboot+小程序的睡眠健康管理系统小程序(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/8 21:50:07

计算机小程序毕设实战-基于springboot+小程序的医院挂号系统小程序基于SpringBoot智能在线预约挂号系统微信小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/8 21:35:58

小程序毕设项目:基于springboot+小程序的桂林旅游桂林源记小程序的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/8 21:27:49

细胞多尺度仿真软件:PhysiCell_(2).PhysiCell软件介绍及安装

PhysiCell软件介绍及安装 软件介绍 PhysiCell是一个开源的多尺度细胞仿真软件,基于C开发,旨在模拟生物组织中的细胞行为和相互作用。它将单个细胞的生理过程(如增殖、代谢、迁移等)与宏观组织环境(如营养物质扩散、力…

作者头像 李华