我已经成功运行 python 脚本几个月了。该脚本使用
win32com
命令编辑模板 Excel 电子表格,然后将编辑后的工作簿保存为新的 .xlsx 文件。
results_path = "C:\\Users\\...\\"
results_title = results_path + input + "_Results.xlsx"
if os.path.exists(template_path):
xl= win32com.client.gencache.EnsureDispatch("Excel.Application")
xl.Application.DisplayAlerts = False
xl.Workbooks.Open(Filename= template_path)
xl.Application.Cells(2,6).Value = input
r = 17
for row in y_test:
row = str(row)
row = row[1:]
row = row[:-1]
xl.Application.Cells(r,2).Value = row
r += 1
# xl.Application.CalculateFullRebuild
# xl.ActiveWorkbook.SaveAs(Filename = save_title)
# time.sleep(20)
r = 17
for row in prediction:
row = str(row)
row = row[1:]
row = row[:-1]
xl.Application.Cells(r,3).Value = row
r += 1
xl.ActiveWorkbook.SaveAs(Filename = results_title)
如果不更改脚本中的任何内容,它就不再起作用。有一天它停止工作了
这是错误:
Traceback (most recent call last):
File "<ipython-input-5-aaef40198ed6>", line 1, in <module>
runfile('C:/Users/Alex/Desktop/Stocks/Python Stock Code/BizNet.py', wdir='C:/Users/Alex/Desktop/Stocks/Python Stock Code')
File "C:\Users\Alex\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
execfile(filename, namespace)
File "C:\Users\Alex\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Alex/Desktop/Stocks/Python Stock Code/BizNet.py", line 99, in <module>
BizNet_test.accuracy_Test(companyInputOrderArray,input,model)
File "C:\Users\Alex\Desktop\Stocks\Python Stock Code\BizNet_test.py", line 125, in accuracy_Test
xl.ActiveWorkbook.SaveAs(results_title)
File "C:\Users\Alex\AppData\Local\Temp\gen_py\3.5\00020813-0000-0000-C000-000000000046x0x1x9\_Workbook.py", line 284, in SaveAs
, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout
com_error: (-2147352562, 'Invalid number of parameters.', None, None)
明白了!!!
有一个临时缓存文件夹“gen_py”我必须删除。错误中的文件路径引用的那个。
"C:\Users\Alex\AppData\Local\Temp\gen_py\3.5\00020813-0000-0000-C000-000000000046x0x1x9\_Workbook.py"
我不知道为什么会这样,也不知道错误最初是如何发生的,但现在一切都很好。
在保存文件之前运行此命令可以解决问题。
import os
import tempfile
import shutil
cache_dir = os.path.join(tempfile.gettempdir(), 'gen_py')
if os.path.exists(cache_dir):
shutil.rmtree(cache_dir)