Python 文件及目录操作详解

引言

在 Python 中,文件和目录操作是非常常见的任务。无论是读写文件、创建和删除目录,还是获取文件的基本信息,Python 都提供了丰富的内置模块来帮助我们完成这些工作。本文将详细介绍如何使用 Python 进行文件和目录操作,包括创建和打开文件、关闭文件、写入和读取文件内容、使用 osos.path 模块进行文件和目录管理等。

1. 创建和打开文件

在 Python 中,可以使用内置的 open() 函数来创建和打开文件。open() 函数的第一个参数是文件名,第二个参数是模式(如 'r' 表示只读,'w' 表示写入,'a' 表示追加等)。

示例代码:

# 打开一个文件以写入模式
file = open("example.txt", "w")

# 写入一些内容
file.write("Hello, World!\n")

# 关闭文件
file.close()
2. 关闭文件

关闭文件是非常重要的一步,因为文件打开后会占用系统资源。如果不关闭文件,可能会导致资源泄漏或其他问题。可以使用 close() 方法来关闭文件。

示例代码:

# 打开一个文件以写入模式
file = open("example.txt", "w")

# 写入一些内容
file.write("Hello, World!\n")

# 关闭文件
file.close()
3. 使用 with 语句自动管理文件的打开和关闭

with 语句可以自动管理文件的打开和关闭,确保即使在发生异常时也能正确关闭文件。

示例代码:

# 使用 with 语句打开文件
with open("example.txt", "w") as file:
    file.write("Hello, World!\n")
# 文件在这里自动关闭
4. 写入文件内容

可以使用 write() 方法向文件中写入内容。如果文件是以写入模式打开的,write() 方法会覆盖文件中的现有内容。

示例代码:

# 使用 with 语句打开文件并写入内容
with open("example.txt", "w") as file:
    file.write("Hello, World!\n")
    file.write("This is a new line.\n")
5. 读取文件

可以使用 read() 方法从文件中读取内容。read() 方法可以读取整个文件的内容,也可以指定读取的字节数。

示例代码:

# 使用 with 语句打开文件并读取内容
with open("example.txt", "r") as file:
    content = file.read()
    print(content)
# 输出: Hello, World!
# This is a new line.

你也可以使用 readline() 方法逐行读取文件内容:

# 使用 with 语句打开文件并逐行读取内容
with open("example.txt", "r") as file:
    for line in file:
        print(line, end="")
# 输出: Hello, World!
# This is a new line.
6. os 和 os.path 模块

osos.path 模块提供了许多文件和目录操作的功能。os 模块主要用于与操作系统交互,而 os.path 模块则提供了一些处理路径的函数。

示例代码:

import os
import os.path

# 获取当前工作目录
current_dir = os.getcwd()
print(f"Current directory: {current_dir}")

# 列出当前目录下的所有文件和目录
for item in os.listdir(current_dir):
    print(item)

# 检查路径是否存在
path = "example.txt"
if os.path.exists(path):
    print(f"{path} exists.")
else:
    print(f"{path} does not exist.")

# 检查路径是否为文件
if os.path.isfile(path):
    print(f"{path} is a file.")
else:
    print(f"{path} is not a file.")

# 检查路径是否为目录
if os.path.isdir(path):
    print(f"{path} is a directory.")
else:
    print(f"{path} is not a directory.")
7. 路径

文件路径用于定位文件或目录的位置。在 Windows 和 Unix 系统中,路径的表示方式有所不同。os.path 模块提供了一些处理路径的函数,如 join()split()abspath() 等。

示例代码:

import os

# 使用 join() 函数拼接路径
dir_path = "/home/user"
file_name = "example.txt"
full_path = os.path.join(dir_path, file_name)
print(full_path)  # 输出: /home/user/example.txt

# 使用 split() 函数拆分路径
dir_name, file_name = os.path.split(full_path)
print(f"Directory: {dir_name}, File: {file_name}")
# 输出: Directory: /home/user, File: example.txt

# 使用 abspath() 函数获取绝对路径
abs_path = os.path.abspath(file_name)
print(abs_path)  # 输出: /absolute/path/to/example.txt
8. 判断目录是否存在

可以使用 os.path.exists() 函数检查目录是否存在。

示例代码:

import os

# 检查目录是否存在
dir_path = "/home/user/documents"
if os.path.exists(dir_path):
    print(f"{dir_path} exists.")
else:
    print(f"{dir_path} does not exist.")
9. 创建目录

可以使用 os.mkdir()os.makedirs() 函数创建新目录。os.mkdir() 用于创建单级目录,而 os.makedirs() 用于创建多级目录。

示例代码:

import os

# 创建单级目录
single_dir = "/home/user/new_folder"
os.mkdir(single_dir)

# 创建多级目录
multi_dir = "/home/user/new_folder/sub_folder"
os.makedirs(multi_dir)
10. 删除目录

可以使用 os.rmdir()shutil.rmtree() 函数删除目录。os.rmdir() 用于删除空目录,而 shutil.rmtree() 可以删除非空目录及其内容。

示例代码:

import os
import shutil

# 删除空目录
empty_dir = "/home/user/empty_folder"
os.rmdir(empty_dir)

# 删除非空目录
non_empty_dir = "/home/user/non_empty_folder"
shutil.rmtree(non_empty_dir)
11. 遍历目录

可以使用 os.walk() 函数遍历目录中的文件和子目录。

示例代码:

import os

# 遍历目录
root_dir = "/home/user"

for root, dirs, files in os.walk(root_dir):
    print(f"Current directory: {root}")
    print("Subdirectories:")
    for dir in dirs:
        print(f" - {dir}")
    print("Files:")
    for file in files:
        print(f" - {file}")
12. 删除文件

可以使用 os.remove() 函数删除文件。

示例代码:

import os

# 删除文件
file_path = "/home/user/example.txt"
os.remove(file_path)
13. 重命名文件和目录

可以使用 os.rename() 函数重命名文件或目录。

示例代码:

import os

# 重命名文件
old_file_path = "/home/user/old_name.txt"
new_file_path = "/home/user/new_name.txt"
os.rename(old_file_path, new_file_path)

# 重命名目录
old_dir_path = "/home/user/old_folder"
new_dir_path = "/home/user/new_folder"
os.rename(old_dir_path, new_dir_path)
14. 获取文件基本信息

可以使用 os.stat() 函数获取文件的大小、创建时间等信息。

示例代码:

import os
from datetime import datetime

# 获取文件基本信息
file_path = "/home/user/example.txt"
file_stat = os.stat(file_path)

# 获取文件大小(以字节为单位)
file_size = file_stat.st_size
print(f"File size: {file_size} bytes")

# 获取文件创建时间
creation_time = datetime.fromtimestamp(file_stat.st_ctime)
print(f"Creation time: {creation_time}")

# 获取文件修改时间
modification_time = datetime.fromtimestamp(file_stat.st_mtime)
print(f"Modification time: {modification_time}")

# 获取文件访问时间
access_time = datetime.fromtimestamp(file_stat.st_atime)
print(f"Access time: {access_time}")
结论

本文详细介绍了 Python 中文件和目录操作的各种方法,包括创建和打开文件、关闭文件、使用 with 语句管理文件、写入和读取文件内容、使用 osos.path 模块进行文件和目录管理、路径处理、判断目录是否存在、创建和删除目录、遍历目录、删除文件、重命名文件和目录以及获取文件基本信息。通过掌握这些技能,你可以更高效地管理和操作文件和目录。

扩展阅读


posted @   燕鹏  阅读(273)  评论(0编辑  收藏  举报  
(评论功能已被禁用)
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2023-10-25 Thinkphp无限分类函数
点击右上角即可分享
微信分享提示