python文件目录操作

1. 文件目录基础

在处理程序时,绕不开与文件打交道。在Python中,我们可以使用文件处理模块os和shutil来操作文件。文件操作涉及的常用方法有:创建、读取、修改、删除、遍历等。

1.1 测试文件及目录

在进行文件目录操作前,我们先需要创建一些测试文件及目录。

import os

# 当前目录

cur_path = os.getcwd()

# 创建测试目录

test_dir = os.path.join(cur_path, 'test')

os.mkdir(test_dir)

# 创建测试文件

test_file1 = os.path.join(test_dir, 'test1.txt')

test_file2 = os.path.join(test_dir, 'test2.txt')

with open(test_file1, 'w') as f:

f.write('This is test file 1\n')

with open(test_file2, 'w') as f:

f.write('This is test file 2\n')

代码中我们使用了os模块的getcwd()方法获取当前目录路径,然后执行了创建目录和文件的操作。

在这里我们创建了一个名为test的目录,该目录下创建了文件test1.txt和test2.txt,并向文件中写入了内容。

1.2 文件目录遍历

在使用Python处理文件时,遍历目录结构是非常常用的操作。Python提供了os模块中的listdir()和shutil模块中的walk()来完成目录遍历。

1.2.1 listdir()

listdir()方法可以列出指定路径下的所有文件及目录。

path = test_dir

for file_name in os.listdir(path):

print(file_name)

代码中我们使用了os.listdir()方法依次列出了test目录下的所有文件和目录。

1.2.2 walk()

walk()方法可以递归地列出指定目录下的所有目录和文件

path = test_dir

for root, dirs, files in os.walk(path):

print(root)

print(dirs)

print(files)

代码中的os.walk()方法返回三个部分:root、dirs、files。root表示当前遍历的目录名称,dirs是列表形式,包含当前目录下所有的子目录,files是列表形式,包含当前目录下所有的文件。

2. 文件操作

2.1 文件读取

Python提供了多种方法读取文件,常用的方法是使用with语句。

file_path = test_file1

with open(file_path, 'r') as f:

content = f.read()

print(content)

代码中,我们使用了with语句打开test1.txt文件,然后使用read()方法读取文件内容,并将内容输出。

使用with语句的好处是文件读取完毕后会自动关闭,即使在读取过程中发生异常也能够保证文件关闭。

2.2 文件写入

使用Python写入文件也非常容易。我们可以使用open()方法以写入模式打开文件。如需追加内容可以使用追加模式'a'。

file_path = test_file1

with open(file_path, 'a') as f:

f.write('This is a new line\n')

代码中,我们以追加模式打开了test1.txt文件,并写入了一行新的内容。

2.3 文件复制

复制文件可以使用shutil模块中的copy()方法或copyfile()方法。

import shutil

src_file = test_file1

dst_file = os.path.join(test_dir, 'test3.txt')

# shutil.copy()

shutil.copy(src_file, dst_file)

# shutil.copyfile()

shutil.copyfile(src_file, dst_file)

代码中,我们使用了shutil模块中的copy()方法和copyfile()方法分别实现了文件的复制。copy()方法将整个文件拷贝一份,copyfile()方法则是将文件内容拷贝到一个新的文件中。

2.4 文件移动和重命名

使用os模块中的rename()方法可以移动文件或重命名文件。

src_path = test_file1

dst_path = os.path.join(test_dir, 'test1_new.txt')

os.rename(src_path, dst_path)

代码中,我们将test1.txt文件更名为test1_new.txt,并将其移动到test目录下。

2.5 文件删除

我们可以使用os模块中的remove()方法来删除文件。

file_path = test_file2

os.remove(file_path)

代码中,我们使用os.remove()方法删除了test2.txt文件。

3. 目录操作

3.1 目录创建

使用os.mkdir()方法可以直接创建目录。

new_dir = os.path.join(test_dir, 'new')

os.mkdir(new_dir)

代码中,我们在test目录下创建了一个名为new的目录。

3.2 目录复制

同样地,我们也可以使用shutil模块中的copytree()方法复制整个目录。

src_dir = test_dir

dst_dir = os.path.join(cur_path, 'test_new')

shutil.copytree(src_dir, dst_dir)

代码中,我们使用shutil.copytree()方法将test目录下所有的文件及目录复制到test_new目录下。

3.3 目录移动和重命名

使用os模块中的rename()方法可以移动目录或重命名目录。

src_path = test_dir

dst_path = os.path.join(cur_path, 'test_new2')

os.rename(src_path, dst_path)

代码中,我们将test目录移动到test_new2目录下,并重命名为test_new。

3.4 目录删除

使用os模块中的rmdir()方法可以删除一个空目录,如果目录中有文件则需要使用shutil模块中的rmtree()方法。

dir_path = new_dir

os.rmdir(dir_path)

shutil.rmtree(test_dir)

代码中,我们先使用os.rmdir()方法删除了new目录,由于test目录下有文件,我们使用shutil.rmtree()方法将其删除。

4. 总结

文件和目录操作是编程中常见的操作之一,Python提供了丰富的方法来完成这些操作,而且操作方法也很简单易懂。熟练掌握文件和目录操作,能够大大提高我们的编程效率。

后端开发标签