基本任务
检索qpython文件夹下的.py,将文件复制单独文件夹并给出进度条
详细说明
-
首先导入了os和shutil模块,它们分别用于进行文件、文件夹操作和复制文件操作。
-
然后定义了源文件夹路径和目标文件夹路径。源文件夹路径指定了需要遍历的文件夹,而目标文件夹路径指定了复制文件的目标路径。
-
接着使用os模块创建了目标文件夹。如果目标文件夹不存在,则通过os.makedirs函数进行创建。
-
使用os.listdir函数遍历源文件夹中的所有文件名,使用for循环对每个文件进行处理,判断该文件是否以.py结尾,如果是则执行下一步操作。
-
生成新文件名。在目标文件夹中,文件名由序号和文件名组成,序号表示该文件在目标文件夹中的顺序。序号的值等于目标文件夹中已有文件数量加1。例如,如果目标文件夹中已经有一个文件,那么当前文件的序号就为2,以此类推。
-
构建源文件路径和目标文件路径。使用os.path.join函数将文件名和文件夹路径拼接起来,得到源文件路径src_file_path和目标文件路径dst_file_path。
-
复制文件到目标文件夹。使用shutil.copy函数将源文件复制到目标文件夹中。
-
上述操作中,文件复制过程比较耗时,如果文件较多,用户等待的时间也会较长。因此,我们可以使用tqdm库添加进度条功能,让用户更加直观地了解复制进度。
-
首先,我们使用from tqdm import tqdm语句从tqdm库中导入tqdm函数。
-
接着,获取源文件夹中所有.py文件的列表py_files。这可以通过列表推导式实现,遍历源文件夹中的所有文件名,将以.py结尾的文件名加入到py_files列表中。
-
使用tqdm函数创建一个进度条。进度条的描述信息为’Copying files’,也可以根据需要进行修改。使用for循环遍历py_files列表,对每个文件进行处理。
-
在for循环中的操作与前面的代码类似,使用生成新的文件名、构建源文件路径和目标文件路径、复制文件到目标文件夹等步骤。
-
在for循环之外,现在运行程序时,你将看到一个带有进度条的复制文件过程。进度条显示复制文件的进度,可以让用户更加直观地了解复制过程。
代码
添加一个简单的进度条。可以使用tqdm库来实现进度条功能。首先,请确保你已经安装了tqdm库,如果没有安装可以使用以下命令进行安装:
pip install tqdm
然后,你可以使用下面的代码来实现进度条功能:
import os
import shutil
from tqdm import tqdm
# 源文件夹路径
src_folder = '/storage/emulated/0/qpython'
# 目标文件夹路径
dst_folder = '/storage/emulated/0/qpython/py文件'
# 创建目标文件夹
if not os.path.exists(dst_folder):
os.makedirs(dst_folder)
# 获取源文件夹中的.py文件列表
py_files = [file_name for file_name in os.listdir(src_folder) if file_name.endswith('.py')]
# 使用tqdm创建进度条,并遍历.py文件列表
for file_name in tqdm(py_files, desc='Copying files'):
# 生成新文件名
new_file_name = f"{len(os.listdir(dst_folder)) + 1}_{file_name}"
# 构建源文件路径和目标文件路径
src_file_path = os.path.join(src_folder, file_name)
dst_file_path = os.path.join(dst_folder, new_file_name)
# 复制文件到目标文件夹
shutil.copy(src_file_path, dst_file_path)
以上代码中,我们通过将.py文件列表传递给tqdm函数来创建进度条。
进度条会显示复制文件的进度。你可以根据需要修改进度条的描述信息。运行以上代码,你将看到一个带有进度的复制文件过程。