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