电脑微信接收到的文件如何编写python程序让其自动归档以及自动编写一个接收到文件的excel清单包含接收到的日期、发送人昵称以及文件类型。
实现这个功能,需要用到以下两个Python模块:
os模块:用于处理文件和目录的函数;openpyxl模块:用于操作Excel文件。
首先,需要定义一个函数来处理接收到的文件。该函数需要接收一个参数,即接收到的文件路径。在函数内部,可以使用os模块中的函数来获取文件信息,如文件名、文件类型、文件大小等。然后,可以根据文件类型来归档文件,例如将图片文件保存在一个名为“图片”的文件夹中,将文档文件保存在一个名为“文档”的文件夹中。
接下来,需要编写一个函数来创建Excel清单,并将接收到的文件信息写入Excel文件中。在这个函数中,需要使用openpyxl模块来创建Excel文件并添加表头以及数据。可以使用os模块中的函数来遍历接收到的文件目录,并将每个文件的信息写入Excel文件中。
最后,可以编写一个主函数,用于监控电脑微信接收到的文件目录,并调用上述两个函数来自动归档文件并生成Excel清单。可以使用os模块中的函数来监控目录中是否有新的文件出现,如果有,则调用处理文件的函数来归档文件,然后调用生成Excel清单的函数来更新Excel文件。
下面是一个示例代码,供参考:
import os
from datetime import datetime
from openpyxl import Workbook
# 处理接收到的文件
def process_file(file_path):
# 获取文件信息
file_name = os.path.basename(file_path)
file_type = os.path.splitext(file_name)[1]
file_size = os.path.getsize(file_path)
file_create_time = datetime.fromtimestamp(os.path.getctime(file_path)).strftime('%Y-%m-%d %H:%M:%S')
sender_nick = 'unknown' # TODO: 获取发送人昵称
# 归档文件
if file_type in ['.jpg', '.png', '.gif']:
folder_name = '图片'
elif file_type in ['.doc', '.docx', '.pdf']:
folder_name = '文档'
else:
folder_name = '其他'
folder_path = os.path.join(os.path.dirname(file_path), folder_name)
if not os.path.exists(folder_path):
os.mkdir(folder_path)
new_file_path = os.path.join(folder_path, file_name)
os.rename(file_path, new_file_path)
# 返回文件信息
return file_create_time, sender_nick, file_type
# 生成Excel清单
def create_excel(file_dir):
# 遍历文件目录
file_list = []
for root, dirs, files in os.walk(file_dir):
for file_name in files:
file_path = os.path.join(root, file_name)
file_create_time, sender_nick, file_type = process_file(file_path)
file_list.append((file_create_time, sender_nick, file_type))
# 创建Excel文件并写入数据
wb = Workbook()
ws = wb.active
ws.append(['日期', '发送人', '文件类型'])
for file_info in file_list:
ws.append(file_info)
wb.save('接收文件清单.xlsx')
# 主函数
def main():
file_dir = 'C:/Users/user/Documents/接收文件'
while True:
for file_name in os.listdir(file_dir):
file_path = os.path.join(file_dir, file_name)
if os.path.isfile(file_path):
process_file(file_path)
create_excel(file_dir)
time.sleep(60)
if __name__ == '__main__':
main()
注意,以上代码仅供参考,实际应用中需要根据具体情况进行修改和优化。
原文地址: https://www.cveoy.top/t/topic/bNaJ 著作权归作者所有。请勿转载和采集!