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提供了丰富的方法来完成这些操作,而且操作方法也很简单易懂。熟练掌握文件和目录操作,能够大大提高我们的编程效率。