相关疑难解决方法(0)

从Python获取退出状态代码

我有一个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()(参见此处)和其他一些不成功的尝试.

shell exit

4
推荐指数
1
解决办法
1万
查看次数

Python subprocess.call有效,但subprocess.check_call不起作用-有什么区别?

我正在使用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 subprocess

3
推荐指数
1
解决办法
1万
查看次数

如何使用Python在后台运行DOS批处理文件?

如何使用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 command-line subprocess

2
推荐指数
1
解决办法
1万
查看次数

检查 python 函数返回的退出代码

我写了一个python函数

def foo():
    if A:
        do something
    if B:
        exit(-1)

if __name__ == "__main__":
    foo()
Run Code Online (Sandbox Code Playgroud)

有什么方法可以检查 foo 函数返回的退出代码吗?我从 Windows shell 运行它。

windows-shell python-2.7

1
推荐指数
1
解决办法
8100
查看次数

gcc可以返回一个值吗?

我怎么知道gcc的返回值?

例如,我有一个c文件test.c,我只是gcc test.c在终端中运行.它可以报告当前编译是否遇到一些错误,但是如何知道gcc的这次编译过程的返回值?

现在我知道1手段有错误,但0不仅会返回警告而且还会编译好,如果有错误怎么办?如果我使用-Werror,它可能会停止编译,我不想停止编译

gcc

0
推荐指数
1
解决办法
3083
查看次数