我正在嘗試運行 python 腳本來更新 ppt 演示文稿。一年前我也嘗試過在 SQL 中運行回歸和更新表,但也沒有運行。當時我放棄了,因為我無法解決它。
我設法創建了一個 bat 檔案來在 Windows 調度程式中運行 R 代碼,并且可以正常作業。
我已經創建了 bat 檔案并在命令提示符下對其進行了測驗,py 檔案運行并更新了 ppt 演示文稿。
當我在 Windows 調度程式中運行此 bat 檔案時,不會更新 ppt。
目前bat檔案如下:
@echo off?
SET log_file=C:\python\logfile.txt
echo on
call :logit >>log_file=%
exit /b 0 ?
:logit
call C:\ProgramData\Anaconda3\Scripts\activate.bat
cd C:\python\
python Updateppt.py
這些是我到目前為止嘗試過的事情:
- 在 bat 檔案中添加了一個日志檔案。創建日志檔案并添加三個步驟,因此我知道 bat 檔案已運行。日志檔案回傳以下內容:
C:\python>call C:\ProgramData\Anaconda3\Scripts\activate.bat
(base) C:\python>cd C:\python\
(base) C:\python>python Updateppt.py
- 根據堆疊溢位的建議將 bat 檔案編輯為各種組合。他們中的大多數人在命令提示符下作業,但在 Windows 調度程式中沒有作業
- 檢查我保存資訊的檔案夾上的安全設定,我擁有完全訪問權限
- 確保將檔案夾添加到環境變數的系統和用戶部分的 PYTHONPATH
- 擁有一個當前通過 Windows 調度程式通過 bat 檔案運行的 R 檔案,因此確保屬性中的所有常規、條件和設定部分都匹配
- 在所有包上重新運行 pip install 以確保它們在 py 檔案運行時可訪問并且位于正確的位置。這是基于以下建議: Cannot schedule a python script to run through Windows Task Scheduler
- 定時命令提示符和 windows 調度程式任務,命令提示符需要 30 秒,而 windows 調度程式需要 20 秒
- 添加了對 python 檔案的日志記錄,并在腳本啟動時記錄,并記錄在 Windows 調度程式中運行的時間,因此它正在運行 python 腳本
我能做些什么來讓它作業嗎?我真的很茫然,我似乎找不到實際解決我遇到的問題的堆疊溢位回應
更新
我在每個函式運行后和最后一個函式之前添加了時間,日志檔案顯示當它在 Windows 調度程式中運行時,它不會運行最后一個函式,而是回圈回到第一個函式。它不會在命令提示符下執行此操作
python的windows scheduler運行日志
INFO:root:run script started at 2022-04-29 13:18:31.318567
INFO:root:loaded enc data at 2022-04-29 13:18:32.072627
INFO:root:create enc_id at 2022-04-29 13:18:32.075627
INFO:root:agg data at 2022-04-29 13:18:59.782707
INFO:root:run script started at 2022-04-29 13:19:22.904437
INFO:root:loaded enc data at 2022-04-29 13:19:23.225462
INFO:root:create enc_id at 2022-04-29 13:19:23.228464
python的命令提示符日志
INFO:root:run script started at 2022-04-29 13:20:48.871881
INFO:root:loaded enc data at 2022-04-29 13:20:49.051893
INFO:root:create enc_id at 2022-04-29 13:20:49.054894
INFO:root:agg data at 2022-04-29 13:21:05.040096
INFO:root:run script stopped at 2022-04-29 13:21:05.436125
它應該聚合資料,然后匯出到 ppt,腳本將停止并運行“運行腳本停止”行。為什么它會在命令提示符下正確運行而不是 Windows 調度程式?
這是它沒有運行的代碼
def update_ppt(CHW_daily):
daily_figures = Presentation(ResultPath 'Template/daily_figures_template.pptx')
# CHW table
slide_CHW = daily_figures.slides[0]
table_CHW = [shape for shape in slide_CHW.shapes if shape.has_table]
#Then we can update the values in each cell directly from the dataframe:
for i in range(1,8):
for j in range(0,6):
table_CHW[0].table.cell(i,j).text = str(CHW_daily.iloc[i-1, j])
table_CHW[0].table.cell(i,j).text_frame.paragraphs[0].font.size = Pt(14)
daily_figures.save(ResultPath 'daily_figures.pptx')
return()
uj5u.com熱心網友回復:
問題是檔案無法保存在網路驅動器中。錯誤說它找不到檔案路徑。我使用了這段代碼并解決了這個問題:
from pathlib import Path
ResultPath = Path(r'<network domain name>/Daily figures/')
ResultPath_str = str(ResultPath)
daily_figures = Presentation(ResultPath_str '/' Template/daily_figures_template.pptx')
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/470190.html
