场景引入
今天在帮导师干活的时候需要整理某本书上某章节的例题,需要为每个例题创建一个文件夹,然后把每个题用到的python源代码保存到该例题对应的文件夹下。(每个题需要单独新建一个py文件来保存)
在工作中遇到数量大且高可重复应的任务,我们往往会想到通过工具或者写程序来批量解决以提升工作效率,还能缓解枯燥重复的任务带来的负面情绪。我想到了写.bat批处理文件、使用python脚本来实现。既然是整理python例题,最后使用python脚本吧。经过好一顿搜索,解决了这个问题。在此记录处理任务的过程,忘了以后还能再看看。
①批量创建文件夹
某一章内一共有57个例题需要创建57个文件夹,这里用到了os模块下的mkdir函数,mkdir顾名思义make directory。 mkdir() 函数的参数是需要创建的文件夹的路径。for循环批量创建时循环变量来控制文件夹的名字 “例1、例2、… 例57”。注意range序列是左闭右开区间 [ 1, 58 )。实现代码如下:
import os
for i in range(1,58):
path = r'F:\编程题题库\python编程题数据集和代码468\第四章\例'+ str(i)
print(path)
os.mkdir(path)
②批量创建文件
保存代码要用.py文件同样需要创建57个。创建文件需要用到os模块的open函数,第一个参数是文件路径,第二个参数是读写的标记。每个py文件的首行我加了一句注释。文件名是 4_1.py - 4_57.py
import os
for i in range(48,58):
path = r'F:\编程题题库\python编程题数据集和代码468\第四章\code\4_' + str(i) + ".py"
file = open(path,'w')
file.write("#示例代码")
③批量复制文件到指定文件夹
为什么我不在第①步创建文件夹的时候就在文件夹下创建py文件,还要通过第③步来移动呢?因为57个py文件夹创建好之后我要往每个题对应的文件中写python代码。我觉得这写py文件在一个文件夹里,比较方便我用vs code编辑,直接打开一个code文件夹就能看到1-57。等每个题的代码写完后再复制到第①步对应的例题文件夹内。复制文件到指定文件夹需要用到shutil模块下的copy函数,第一个参数是文件原始位置,第二个参数是文件的目标位置。复制文件的python代码如下:
import shutil
for i in range(2,58):
old = r'F:\编程题题库\python编程题数据集和代码468\第四章\code\4_' + str(i) + ".py"
new = r'F:\编程题题库\python编程题数据集和代码468\第四章\例'+ str(i)
shutil.copy(old,new)