[英]Windows Error 2 when running batch file in Python script
我看到了幾個專用於此錯誤的線程,但沒有一個解決了我的問題。 以為我會發布,以便人們可以查看我的代碼,也許我們可以為每個人找出另一個解決方案。
我正在嘗試運行Python腳本,其首要任務是運行批處理文件。 批處理文件實際上運行Wget來下載Python腳本將使用的文件。
如果我手動運行整個Python腳本,則可以完美運行。 但是,如果我使用Windows Task Scheduler或從命令行運行它,則批處理腳本有問題。
如果我批處理腳本部分,Task Scheduler / CMD可以很好地運行Python腳本。 Task Scheduler / CMD也可以獨立運行批處理文件,沒有問題。
這是我的Python代碼:
import time
import os
import sys
from subprocess import Popen
import zipfile
import win32com.client as win32
#1# Run the downloader batch file
p = Popen("NDICDownloader.bat", cwd=r"C:\NDICUpdate")
stdout, stderr = p.communicate()
p.wait()
這是我在命令行中遇到的錯誤:
c:\Python27\python.exe c:\NDICUpdate\NDICUpdater.py
Traceback (most recent call last):
file "c:\NDICUpdate\NDICUpdater.py", line 9, in (module)
p = Popen("NDICDownloader.bat", cwd=r"C:\NDICUpdate")
file "c:\Python27\lib\subprocess.py", line 672, in __init__
errread, errwrite)
file "c:\Python27\lib\subprocess.py", line 882, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
這是批處理文件:
cd C:\NDICUpdate\NDIC
wget --arguments include sensitive info--
批處理文件使用Wget將文件下載到NDIC文件夾。 所有腳本都位於根文件夾C:\\ NDICUpdate中。 所有文件都存在。
問題是試圖使用Windows在Python腳本中運行批處理文件。 為什么Windows和Python碰到頭了?
(已在注釋中回答。請參閱無答案的問題,但問題已在注釋中解決(或在聊天中擴展) )
@MC ND寫道:
更改您的代碼以使用
/c NDICUpdate.bat
作為可執行文件的參數來調用cmd.exe
作為啟動過程:
p = Popen(["cmd.exe", "/c NDICDownloader.bat"], cwd=r"C:\\NDICUpdate")
OP寫道:
起作用了。 這也適用:
os.system("c:\\windows\\system32\\cmd.exe /c C:\\NDICDownloader.bat")
。 我最終要做的是編寫一個批處理文件,該文件運行Wget
,然后運行Python。 很多頭痛/浪費時間,但至少是一個可行的解決方案。 仍然不知道如何獲取cmd.exe
來運行Python的子進程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.