Python文件和目录操作详解

下面是对“Python文件和目录操作详解”的完整攻略:

Python文件和目录操作详解

一、文件操作

1.1 打开文件

在 Python 中,我们可以使用内置的 open 函数来操作文件。其语法形式为:

f = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

具体参数介绍如下:

  • file:要打开的文件路径(必选参数)。
  • mode:文件的访问模式(可选参数),默认值为 'r'。具体取值如下:
    • r:只读模式,打开文件后只能读取文件内容,不能写入、修改文件。
    • w:写入模式,打开文件后如果文件已经存在,则清空原有内容。如果文件不存在,则创建一个新文件。
    • a:追加模式,打开文件后从文件末尾开始写入。如果文件不存在,则创建一个新文件。
    • x:独占模式,新建一个文件,如果文件已经存在则报错。
    • b:二进制模式,与其他模式连用,例如 rb、wb、ab。
    • +:读写模式,与其他模式连用,例如 r+、w+、a+。
  • buffering:缓冲大小(可选参数),默认值为 -1。
  • encoding:文件编码(可选参数),例如 'utf-8'。
  • errors:编码错误处理方式(可选参数)。
  • newline:换行符(可选参数)。Python 3.x 中 newline 为换行符,而不是 Python 2.x 中的换行符和回车符组合的字符串 '\r\n'。
  • closefd:是否关闭文件描述符(可选参数),默认值为 True。
  • opener:打开文件时使用的自定义函数(可选参数)。

下面演示打开一个文件,并读取文件内容:

# 打开文件,创建文件对象
file = open('test.txt', mode='r', encoding='utf-8')
# 读取文件内容
content = file.read()
print(content)
# 关闭文件
file.close()

1.2 读取文件

打开文件后,我们可以从文件中读取数据。常用的读取文件的方法有以下几种:

  • read([size]):一次性读取 size 个字符或字节。如果不指定 size,则读取整个文件。
  • readline():读取文件的一行内容。
  • readlines():返回文件每一行内容的列表。

有以下示例代码:

# 打开文件,创建文件对象
file = open('test.txt', mode='r', encoding='utf-8')
# 读取文件内容
# 一次性读取整个文件
content = file.read()
print(content)
# 逐行读取文件,返回一个生成器
lines = file.readlines()
for line in lines:
    print(line)
# 关闭文件
file.close()

1.3 创建文件

我们可以使用 open 函数创建文件,如果文件不存在,则会自动创建。如果文件已经存在,则会清空原有内容。

# 创建文件对象,如果文件不存在,则创建一个新文件;如果文件已经存在,则清空原有内容
file = open('test.txt', mode='w', encoding='utf-8')
# 向文件中写入内容
file.write('hello world')
# 关闭文件
file.close()

1.4 写入文件

如果我们想向文件中写入数据,则可以使用以下方法:

  • write(string):将字符串 string 写入文件。
# 创建文件对象,如果文件不存在,则创建一个新文件;如果文件已经存在,则清空原有内容
file = open('test.txt', mode='w', encoding='utf-8')
# 向文件中写入内容
file.write('hello world')
# 关闭文件
file.close()

1.5 删除文件

我们可以使用以下函数删除文件:

  • os.remove(path):删除指定路径的文件。
import os

if os.path.exists('test.txt'):
    os.remove('test.txt')

二、目录操作

2.1 创建目录

我们可以使用以下函数创建目录:

  • os.mkdir(path):创建一个目录,如果该目录已经存在则会抛出异常。
import os

# 在当前目录下创建一个名为 dir 的目录
if not os.path.exists('dir'):
    os.mkdir('dir')

2.2 删除目录

如果我们想删除一个目录,则可以使用以下函数:

  • os.rmdir(path):删除指定目录,只能删除空目录。
import os

# 删除当前目录下名为 dir 的目录
if os.path.exists('dir'):
    os.rmdir('dir')

2.3 列出目录下的文件和目录

我们可以使用以下函数列出指定目录下的文件和目录:

  • os.listdir(path):返回指定目录下所有文件和目录的列表。
import os

# 列出当前目录下的所有文件和目录
files = os.listdir('.')
for f in files:
    print(f)

2.4 递归遍历目录

如果我们需要递归地遍历一个目录以及子目录下的所有文件和目录,则可以使用以下函数:

  • os.walk(path):返回一个生成器,在遍历目录时依次返回当前目录、该目录下的子目录以及该目录下的所有文件,每个元组包含 3 项,分别为当前目录的路径、当前目录下所有子目录的名称列表、当前目录下所有文件的名称列表。
import os

# 递归遍历当前目录以及子目录下的所有文件和目录
for root, dirs, files in os.walk('.'):
    print('当前目录:', root)
    print('当前目录下的子目录:', dirs)
    print('当前目录下的文件:', files)

以上就是 Python 文件和目录操作的详细介绍和示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python文件和目录操作详解 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • python memory_profiler库生成器和迭代器内存占用的时间分析

    Python是一种动态语言,其内存管理机制相较于其他静态语言有着很大的不同。在Python编程过程中,一些常见的内存问题比如内存泄露、内存瓶颈等都是需要我们及时发现和解决的问题。为了解决这些问题,我们需要查看内存占用和使用情况。这个时候,memory_profiler库就可以派上用场了。 memory_profiler 是一个用于 Python 的内存分析工…

    python 2023年6月2日
    00
  • python中的数据结构比较

    Python中的数据结构可以通过比较运算符进行比较,比较的结果为布尔类型True或False。下面是Python中常用的数据结构的比较方法。 比较List Python中的List数据结构支持比较运算符”<“, “>”, “<=”, “>=”和”==”,其中”==”表示两个List中的元素内容和顺序完全一致。比较的顺序为从第一个元素开…

    python 2023年5月14日
    00
  • 从Numpy数组创建一个Pandas DataFrame,并指定索引列和列头

    创建Pandas DataFrame通常涉及到将原始数据转换成Pandas所能理解的数据结构,即DataFrame。在Python中,使用Numpy数组来创建Pandas DataFrame是一种非常有效的方法。下面是通过Numpy数组创建Pandas DataFrame的完整攻略,包括指定索引列和列头。 创建Pandas DataFrame 要从Numpy…

    python-answer 2023年3月25日
    00
  • python密码学Base64编码和解码教程

    Python密码学Base64编码和解码教程 简介 Base64是一种用来将二进制数据转化为ASCII字符的编码方式,常用于在不可靠的网络环境下传输文本信息。在密码学中,也常用Base64编码来将需要加密的二进制数据转换为可以存储和传输的文本格式。 Python内置了base64模块,可以方便地进行Base64编码和解码操作。 Base64编码 Base64…

    python 2023年5月20日
    00
  • python argparse传入布尔参数false不生效的解决

    下面是关于“python argparse传入布尔参数false不生效的解决”的完整攻略。 问题描述 在使用argparse模块解析命令行参数时,传入布尔类型的参数false时,该参数并没有被解析为False,而是被解析为True。例如,我们定义了如下的命令行参数: import argparse parser = argparse.ArgumentPars…

    python 2023年6月3日
    00
  • Python 3.x 新特性及10大变化

    Python 3.x 新特性及10大变化 Python 3是Python语言的一个主要版本,它在语言基础、标准库以及各种工具和模块上都引入了许多新特性。以下是Python 3.x相对于Python 2.x的主要变化: 1. print函数 在Python 2.x中,print语句是一个语句,不是一个函数,它通常带有一个逗号分隔的参数列表,例如 print “…

    python 2023年5月13日
    00
  • Python处理时间戳和时间计算等的脚本分享

    Python处理时间戳和时间计算等的脚本分享 什么是时间戳? 时间戳是指一个时间点,通常使用单位为秒的形式表示。时间戳可以通过获取自1970年1月1日00:00:00以来的秒数来表示一个时间点。例如,如果今天是2022年1月1日12:00:00,那么它的时间戳就是1641043200。 在Python中,可以使用time模块来获取当前时间的时间戳。 以下是获…

    python 2023年6月2日
    00
  • Python实现Linux下守护进程的编写方法

    下面是详细讲解如何使用Python实现Linux下守护进程的编写方法的攻略: 1. 什么是Linux下守护进程? Linux下守护进程(Daemon)是指在后台运行的一类特殊进程,它没有父进程,也不接受终端输入,并且通常在启动时自动开始运行。守护进程通常用于持续运行的程序,如Web服务器、邮件服务器、数据库服务器等。 2. 如何使用Python实现Linux…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部