如何在Python中重命名目录中的多个文件?
在进行文件操作时,有时候需要对多个文件进行重命名操作,Python提供了os模块来实现这一功能。
阅读更多:Python 教程
获取目录中的文件名
在进行文件重命名之前,首先需要获取目录中的所有文件名。可以使用os模块中的listdir()函数来获取目录中的文件名列表,并使用for循环遍历其中的每个文件名:
import os
dir_path = 'path/to/dir'
file_names = os.listdir(dir_path)
for file_name in file_names:
# TODO: 对文件进行操作
上面的代码中,dir_path为目录的路径,file_names为该目录下的所有文件名列表。在for循环中,可以针对每个文件名进行相应的操作。
文件重命名
对于单个文件的重命名,可以使用os模块中的rename()函数。该函数接受两个参数,第一个参数为原始文件名,第二个参数为新的文件名。
对于多个文件的重命名,可以使用一个循环来逐个重命名。例如,将目录中所有txt文件的扩展名修改为md:
import os
dir_path = 'path/to/dir'
file_names = os.listdir(dir_path)
for file_name in file_names:
if file_name.endswith('.txt'):
new_file_name = os.path.splitext(file_name)[0] + '.md'
os.rename(os.path.join(dir_path, file_name), os.path.join(dir_path, new_file_name))
上面的代码中,首先使用if语句判断文件扩展名是否为txt。如果是txt文件,则使用os模块中的splitext()函数获取文件名与扩展名,并将扩展名修改为md。最后使用os模块中的rename()函数重命名文件。
批量重命名
上面的代码中只是对于该目录下所有txt文件进行了重命名操作。如果需要对整个目录中的所有文件进行重命名,可以对上述代码进行一些修改:
import os
dir_path = 'path/to/dir'
prefix = 'new_prefix_'
file_names = os.listdir(dir_path)
for i, file_name in enumerate(file_names):
new_file_name = prefix + str(i+1).zfill(4) + os.path.splitext(file_name)[1]
os.rename(os.path.join(dir_path, file_name), os.path.join(dir_path, new_file_name))
上述代码中,使用enumerate()函数来获取文件名的索引。new_file_name变量中,首先添加新的前缀,然后使用zfill()函数将索引填充为4位。最后使用os.rename()函数对文件进行重命名。
结论
使用Python进行文件操作可以大大提高文件处理效率,os模块提供了丰富的文件操作函数。对于多个文件的重命名操作,可以使用for循环和os.rename()函数来完成。在进行文件操作时,首先需要获取目录中的所有文件名,然后逐个进行操作即可。