【问题标题】:calling a python line from a batch file从批处理文件中调用 python 行
【发布时间】:2023-03-17 20:54:01
【问题描述】:

我看到 here 我可以从批处理文件中调用 python 脚本。

我想做的是在不使用脚本的情况下调用 python 行。

这是我正在尝试做的一个例子:

>> echo 'python.exe ''' "this/is/a/path".replace('/','\\')'''  '

会返回"this\\is\\a\\path"

注意:在我的示例中,有一种更简单的方法可以做我想做的事情,比如here,但这不是问题:)

【问题讨论】:

  • 批量运行python不要使用echo而是python -c "command",你可以使用print()来显示它。
  • C:\Python27>python.exe -c "p​​rint("helloworld")" Traceback(最近一次调用最后):文件“”,第 1 行,在 中 NameError:名称“helloworld”未定义
  • -c 选项用于将脚本作为字符串传递。还要记住在内部为 python 使用一组引号,在外部使用另一组引号 - 否则 bash 将在匹配它们时遇到问题。对我来说,它只是 shell 中的 python3 -c 'print("this/is/a/path".replace("/","\\"))'
  • 你不能在" " 中使用" " - 你必须使用' ' - 即。 "print( 'helloworld' )"'print( "helloworld" )'

标签: python batch-file


【解决方案1】:

您可以使用-c 标志:

指定要执行的命令(见下一节)。这将终止选项列表(以下选项作为参数传递 到命令)。

python -c '''print("this/is/a/path".replace("/","\\"))'''
> this\is\a\path

【讨论】:

  • python -c '''print("this/is/a/path".replace("/","\\"))''' ... 没有任何反应
  • 使用python3python2.7 对我来说效果很好。您不必在 python 控制台中运行。只需在终端中运行它
  • @GuillaumeD 此命令不在 python 控制台中调用,而是在系统控制台/终端或脚本/批处理中调用。你没有收到任何错误信息吗?也许您必须添加.exe/full/path/to/python.exe
  • 这将打开一个交互式python cnsole,而不是将他留在bash中
【解决方案2】:

感谢@E.Serra 方法,这将起作用。

echo print("this/is/a/path".replace("/","\\"))  > tmp_file && python tmp_file && rm tmp_file

-->

C:\Python27>echo print("this/is/a/path".replace("/","\\"))  >tmp_python_File && python tmp_python_File && rm tmp_python_File
this\is\a\path

【讨论】:

  • 生活是不公平的,伙计:)
  • 但请更正你的命令行,它不起作用。严格:)
  • 答案是正确的,不知道你已经有一个 python.exe 文件,这就是为什么你不能覆盖它,以为 python.exe 是你的临时文件的名称
【解决方案3】:

好的,如果你只是想运行你的 python.exe 那么:

python python.exe 

如果你想运行 perl 风格的 oneliners 那么:

echo '''print("this/is/a/path".replace("/","\\"))'''  >tmp_python_File && python tmp_python_File && rm tmp_python_File

吐口水:

$> this\is\a\path

【讨论】:

  • C:\Python27>echo '''print("this/is/a/path".replace("/","\\"))''' >python.exe && python python.exe && rm python.exe The process cannot access the file because it is being used by another process.
  • 这个答案会覆盖 OP 的 python 可执行文件。我认为他只是想调用它,而不是创建这样的文件。
  • 哇,为什么投反对票? What I want to do is calling a python line without using a script.
猜你喜欢
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多