簡體   English   中英

在Python腳本中運行批處理文件時出現Windows錯誤2

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM