下面是详细的攻略:
1. 准备工作
首先需要安装 Python 语言环境,可以前往官网下载安装。
安装完成后,需要安装第三方库 os
和 shutil
,使用以下命令安装:
pip install os
pip install shutil
2. 功能设计
2.1 获取目录下所有文件
使用 os
模块提供的 listdir
函数获取目录下所有文件和目录:
import os
files = os.listdir(path)
其中 path
为目录路径,函数返回一个列表,包含目录下所有文件和目录的名称。
2.2 筛选出需要整理的文件
根据需要整理的文件类型,筛选出需要整理的文件,可以使用列表推导式进行过滤筛选。例如需要整理的是 txt
和 pdf
文件:
import os
files = os.listdir(path)
target_files = [file for file in files if file.endswith(('.txt', '.pdf'))]
列表推导式会遍历所有文件,筛选出以 txt
或 pdf
结尾的文件名,通过列表保存。
2.3 创建整理后的目录
如果整理后的文件需要保存在新的目录中,可以使用 os
模块提供的 makedirs
函数创建新目录:
import os
if not os.path.exists(new_dir):
os.makedirs(new_dir)
其中 new_dir
是新目录的路径,判断该目录是否存在,如果不存在则创建。
2.4 根据文件名整理文件
根据文件名进行整理的方法,有多种实现方式,以下两种方法只是其中的一部分:
方法一:使用正则表达式
正则表达式中的捕获组 ()
,可以将文件名中的关键信息提取出来,再按照指定规则进行整理。例如将文件名命名为标题,再移动到新目录:
import os
import re
import shutil
files = os.listdir(path)
for file in files:
if file.endswith(('.txt', '.pdf')):
# 使用正则表达式提取文件名中的标题
title = re.match(r'^(.*)\..*$', file).group(1)
# 组合新文件路径
new_file_path = os.path.join(new_dir, title + os.path.splitext(file)[1])
# 移动文件
shutil.move(os.path.join(path, file), new_file_path)
方法二:使用字符串方法
字符串方法中的 split
和 strip
,可以将文件名分割为关键信息,再按照指定规则进行整理。 例如将文件名命名为作者+标题,再移动到新目录:
import os
import shutil
files = os.listdir(path)
for file in files:
if file.endswith(('.txt', '.pdf')):
# 使用字符串方法提取文件名中的标题和作者
split_result = os.path.splitext(file)
title = split_result[0].strip()[5:]
author = split_result[0].strip()[:5]
# 组合新文件路径
new_file_path = os.path.join(new_dir, author + '-' + title + split_result[1])
# 移动文件
shutil.move(os.path.join(path, file), new_file_path)
3. 示例说明
示例一
有一个名为 files
的目录是存储各种文件的地方,现在有一批名为 example_XXX.txt
和 example_YYY.pdf
的文件,需要重命名并移动到新的目录 example_files
中。
使用如下代码:
import os
import re
import shutil
path = 'files'
new_dir = 'example_files'
if not os.path.exists(new_dir):
os.makedirs(new_dir)
files = os.listdir(path)
target_files = [file for file in files if file.endswith(('.txt', '.pdf'))]
for file in target_files:
# 使用正则表达式提取文件名中的标题
title = re.match(r'^(.*)\..*$', file).group(1)
# 组合新文件路径
new_file_path = os.path.join(new_dir, title + os.path.splitext(file)[1])
# 移动文件
shutil.move(os.path.join(path, file), new_file_path)
运行上述代码,重命名成功,并将文件移动到新的目录中。
示例二
有一个目录名为 docs
,其中有一些扩展名为 .pdf
和 .txt
的文件需要重命名,并按照其标题保存到新的目录mydocs
下,例如文件 learn_python.pdf
需要重命名为“learn_python”,文件 coding_skills.txt
需要重命名为“coding_skills”。
使用如下代码:
import os
import shutil
path = 'docs'
new_dir = 'mydocs'
if not os.path.exists(new_dir):
os.makedirs(new_dir)
files = os.listdir(path)
target_files = [file for file in files if file.endswith(('.txt', '.pdf'))]
for file in target_files:
# 使用字符串方法提取文件名中的标题和作者
split_result = os.path.splitext(file)
title = split_result[0].strip()
# 组合新文件路径
new_file_path = os.path.join(new_dir, title + split_result[1])
# 移动文件
shutil.move(os.path.join(path, file), new_file_path)
运行上述代码,文件已经重命名并成功移动到了新目录下。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现批量自动整理文件 - Python技术站