我是python新手。我想刷新一个excel文档,并保存文件的日期时间后缀像filename_20220706_1554
.
我写这个脚本:
import win32com.client
import time
from datetime import datetime
print("Refresh_excel function has started")
xlapp = win32com.client.DispatchEx("Excel.Application")
wb = xlapp.Workbooks.Open(r"C:folderfilename_.xlsx")
wb.RefreshAll()
time.sleep(5)
datestring = datetime.strftime(datetime.now(), '%Y%m%d-%H%M')
print(datestring)
wb.Save(r'C:folderfilename_{datestring}.xlsx')
xlapp.Quit()
但是会抛出这个错误:
File "C:Usersuntitled0.py", line 12, in <module>
wb.Save(r'C:folderfilename_{datestring}.xlsx')
TypeError: Save() takes 1 positional argument but 2 were given
任何想法?
您应该使用wb.SaveAs(...)
而不是wb.Save()
这个错误意味着你传递一个不正确的数量的参数。
看起来你打算使用f'string with {arguments}'
,但却使用了r'string with {arguments}'
,这打破了字符串替换逻辑。
r''
字符串是原始字符串,而f''
字符串格式化字符串。
但是,不能在格式化字符串中使用N
。你需要原始字符串。
您可能应该分两步构建文件名:
filename = f'Hourly_NPI_Sales_Report_{datestring}.xlsx'
filepath = os.path.join(r'C:NPI', filename)