我有一个python脚本,它将执行一些操作,并根据结果,将退出代码0(可以)或1(不好).
我想捕获这个结果,将其存储到变量中并通过UDP发送.这不能在python脚本(要求)内完成.
所以让我们说我的脚本是这样的:
import sys
# Do some stuff
sys.exit(0) # or sys.exit(1)
Run Code Online (Sandbox Code Playgroud)
我和谁一起跑python script.py.
如何获取此退出状态代码(0或1).
我试着回声$errorlevel,但它只打印一个空行.也尝试使用exit(0)而不是sys.exit()(参见此处)和其他一些不成功的尝试.
我正在使用Python 2.7
我正在尝试从Python运行StatTransfer程序。
当我尝试:
tempname = os.path.abspath('./text.txt')
TEMPFILE = open(tempname, 'wb')
try:
subprocess.check_call('ST convert.stc', shell = True, stdout = TEMPFILE, stderr = TEMPFILE)
except:
raise CritError(messages.crit_error_bad_command)
Run Code Online (Sandbox Code Playgroud)
它失败(CritError是用户定义的)。
追溯不会告诉我任何有用的信息:
Traceback (most recent call last):
File "C:\...\py\run_program.py", line 181, in run_stcmd
run.execute_run(current_directory, posix_command, nt_command)
File "C:\...\py\private\runprogramdirective.py", line 99, in execute_run
raise CritError(messages.crit_error_bad_command)
CritError: 'ERROR! Cannot execute command'
Run Code Online (Sandbox Code Playgroud)
但是将相关行更改为:
subprocess.call('ST convert.stc', shell = True, stdout = TEMPFILE, stderr = TEMPFILE)
Run Code Online (Sandbox Code Playgroud)
它运行成功。
有趣的是,在两种情况下,我的TEMPFILE都显示相同的内容:
|/-|/-|/-|/-|/- |/-|/-|/-|/-|/- Stat/Transfer - Command Processor (c) 1986-2011 Circle Systems, Inc. …Run Code Online (Sandbox Code Playgroud) 如何使用Python在后台运行DOS批处理文件?
我在说C:\的地方有一个test.bat文件。
现在,我想在后台使用python运行此bat文件,然后返回到python命令行。
我subprocess.call('path\to\test.bat')从python命令行运行批处理文件。它在与python命令行相同的窗口中运行批处理文件。
如果仍然不清楚/ TL.DR-
怎么了:
>>>subprocess.call('C:\test.bat')
(Running test.bat. Can't use python in the same window)
Run Code Online (Sandbox Code Playgroud)
我想要的是:
>>>subprocess.call('C:\test.bat')
(New commandline window created in the background where test.bat runs in parallel.)
>>>
Run Code Online (Sandbox Code Playgroud) 我写了一个python函数
def foo():
if A:
do something
if B:
exit(-1)
if __name__ == "__main__":
foo()
Run Code Online (Sandbox Code Playgroud)
有什么方法可以检查 foo 函数返回的退出代码吗?我从 Windows shell 运行它。
我怎么知道gcc的返回值?
例如,我有一个c文件test.c,我只是gcc test.c在终端中运行.它可以报告当前编译是否遇到一些错误,但是如何知道gcc的这次编译过程的返回值?
现在我知道1手段有错误,但0不仅会返回警告而且还会编译好,如果有错误怎么办?如果我使用-Werror,它可能会停止编译,我不想停止编译