1

我想在批处理文件和 python 程序之间建立连接。

我想用python得到一个参数“abc”,让批处理文件使用参数“abc”来做其他事情。

如何在 python 中将参数返回到命令行?

谢谢你的帮助。

4

2 回答 2

10

你没有说你正在使用什么环境(*nix/Windows/OSX 等),但是对于 *nix 和 shell 脚本你可以做

# Python
# whatever.py
import sys
sys.stdout.write('abc')
sys.exit(0)

# In your shell
OUT=`python whatever.py`
echo $OUT
# Will print abc, and it's stored in the variable `OUT` for later consumption.

编辑(对于 Windows):

# Python
# whatever.py
import sys
sys.stdout.write('abc')
sys.exit(0)

# In a .bat file, or cli.
python whatever.py > temp.txt
set /p OUT=<temp.txt
# Creates/replaces a file called temp.txt containing the output of whatever.py
# then sets the `OUT` var with the contents of it.

不幸的是,Windows 的执行方式不如 *nix 方式好和整洁。

于 2012-06-01T09:39:50.510 回答
0

在 shell 中,您始终可以使用-cswitch 来执行单次运行的任何命令。为了更好地解释,它以python脚本的形式执行字符串。所以简而言之,它运行 python 终端,执行然后终止 python 终端。就那么简单。现在让我举一些例子来说明

请记住,我使用带有 cmd 终端的 Windows 10 机器

python -c "print(__name__)" 

返回__main__值,因为我目前在命令提示符下。现在这太棒了,因为 python 支持多线程在每一行之后,因此理论上您可以将整个脚本编写为文本文件,然后使用python -c安装的正确版本的 python 执行它。

所以,python -c "import sys;sys.stdout.write('abc')"如果你愿意,你可以很容易地做到这一点。

现在要将其保存到命令变量中,我只发现了一种不好的方法,但如果有人有另一种方法。请给出意见。

python -c "import string;print(dir(string))" >> text.txt
set /p drStr= < text.txt
del text.txt

或在大量的 oneliner 中:

python -c "import string;print(dir(string))" >> text.txt && set /p drStr= <text.txt && del text.txt

现在只需键入set drStr以打印出变量即可。

于 2017-06-04T12:00:17.740 回答