问题描述:
比如我需要收集全部员工填写后的一份资料,要让每个人填写某个文档(模板)。现在手上有个名单列表。
考虑到钉钉群里面,部分人没有电脑,只有手机的,用手机下载文件再编辑上传比如麻烦。
为了方便操作,就可以建个文件夹,把模板的文档复制到文件夹中,并依次重命名为员工姓名的文件名。
然后把整个文件夹上传到钉钉群就可以了。群成员找到文件夹中自己名字的文档,直接在线编辑就行了。
当然,上面只是举个例子,主要是方便在钉钉群中方便群员用手机操作。
此文主要介绍用Python读取Excel中姓名列表,再批量复制文件并重命名的方法。
实现思路:
- 读取Excel表中姓名列的数据
- 创建一个目录,用来放所有的文档
- 循环遍历姓名列表(List),依次复制文件并重命名
一、用openpyxl库读取Excel表格
openpyxl 库是Python用来操作Excel表格(.xlsx)一个库。这里只简单介绍怎么读取一列数据,不作详细介绍。
比如有这样一张表:
我们怎么把A列的数据读出来。
1.安装openpyxl 库
2.读取Excel一列(A列)数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import openpyxl
def read_from_excel_by_col_name(ex_file, sheet_name, col_name): if(os.path.exists(ex_file)): book = openpyxl.load_workbook(ex_file) sheet = book[sheet_name] else: return False
value_list = [] for col_num in sheet[col_name]: value_list.append(col_num.value) book.close() return value_list
name_list = read_from_excel_by_col_name('信息表.xlsx', 'Sheet1', 'A')
|
二、创建文件夹
这个简单,直接用Python自带的os库的makedirs()方法就行。
1 2 3 4 5 6 7 8 9
| import os
def mkdir(path): outdir = os.path.exists(path) if not outdir: os.makedirs(path)
mkdir('D:\107轨迹确认书')
|
三、复制文件并重命名
用shutil库,实现对文件的复制操作,之前一篇文章专门讲了这个库的用法举例:Python文件操作 shutil库使用举例
1 2 3 4 5 6 7 8 9 10
| import shutil
temp_file = r'D:\a.docx' houzhui = '.' + temp_file.split('.')[-1]
dst_path = r'D:\107轨迹确认书' new_file_name = '1荀彧' dst = dst_path + '\\' + new_file_name + houzhui
shutil.copy(temp_file, dst)
|
四、完整代码举例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| import os, shutil import openpyxl
def mkdir(path): outdir = os.path.exists(path) if not outdir: os.makedirs(path)
def read_from_excel_by_col_name(ex_file, sheet_name, col_name): if(os.path.exists(ex_file)): book = openpyxl.load_workbook(ex_file) sheet = book[sheet_name] else: return False
value_list = [] for col_num in sheet[col_name]: value_list.append(col_num.value) book.close() return value_list
def main(): ex_file = r'.\信息表.xlsx' temp_file = r'C:\节假日离校返家师生员工行动轨迹确认书.doc' houzhui = '.' + temp_file.split('.')[-1]
dst_path = r'D:\107轨迹确认书' mkdir(dst_path)
name_list = read_from_excel_by_col_name(ex_file, 'Sheet1', 'A')
for name in name_list: dst = dst_path + '\\' + name + houzhui shutil.copy(temp_file, dst) print('-------------fine!')
main()
|
运行后结果如图: