我目前正在运行一个使用python的VBA宏,所以我可以自动化一些过程,我目前还使用tqdm在我的其他python代码中添加了一个进程栏,这非常有用。
有没有人知道是否可以运行宏并测量需要多长时间,并使用进程栏来查看我所处的阶段,因为我已经将其设置为在后台运行。代码需要5-6个小时才能运行,所以最好知道我还剩下多少时间。
import xlwings as xw
def run_mac(file_path):
try:
xl = xw.App(visible=True, add_book=False)
wb = xl_app.books.open(file_path)
run_macro = wb.app.macro('lookupLoop.Open_Report')
run_macro()
wb.save()
wb.close()
xl.quit()
except Exception as ex:
template = "An exception of type {0} occurred. Arguments:\n{1!r}"
error = template.format(type(ex).__name__, ex.args)
print(error)
run_mac(input('Excel path: '))这是我为文件传输准备的内容:

发布于 2020-08-12 17:24:58
我不太了解宏,但基于您之前的一个问题,我实现了一个进度条,以提供有关已传输的文件的信息。
import os
import shutil
import time
import datetime
import tqdm
src = "C:/Users/eldri/OneDrive/Desktop/"
dst = "C:/Users/eldri/OneDrive/Desktop/output"
ext = input("[+] File format: ") # "txt"
start = input("[+] Date start: ") # "01/07/2020"
end = input("[+] Date end: ") # "30/07/2020"
def dateRange(createdDate, startDate, endDate):
"""determines if date is in range"""
createdDate = datetime.datetime.strptime(createdDate, '%a %b %d %H:%M:%S %Y')
startDate = datetime.datetime.strptime(startDate, '%d/%m/%Y')
endDate = datetime. datetime.strptime(endDate, '%d/%m/%Y')
return startDate < createdDate < endDate
files = os.listdir(src)
numFiles = len(files)
pbar = tqdm.tqdm()
for filename, i in zip(files, tqdm.trange(numFiles-1)):
print(filename)
created = time.ctime(os.path.getmtime(src + filename))
if filename.endswith('.' + ext) and dateRange(created, start, end):
shutil.copy(src + filename, dst)
msg = "[+] File transferred " + filename + created
else:
msg = "[+] File not transferred " + filename + created
pbar.set_postfix_str(msg)
print("[+] Transfer complete")进度条显示100%|██████████| 10/10 [00:50<00:00, 5.00s/it] 10/10是传输的文件数,[00:50<00:00,的格式为[time taken<time remaining,,5.00s/it]表示复制一个文件需要多长时间。所有时间都是基于复制文件的平均时间进行估计的。
https://stackoverflow.com/questions/63326599
复制相似问题