在python中,如何将变量传递给命令行?

In python how to pass a variable to the command line?

提问人:NeStack 提问时间:8/17/2023 更新时间:8/18/2023 访问量:47

问:

我有一个函数,我使用这样的东西:

def func(file_path):
    !python some_script.py --par file_path

func('/some/file/path/file.csv')

这显然会导致错误消息,因为 Python 假设行中是文本文件路径,而我想将其用作表示文件路径的变量。file_path!python some_script.py --par file_path

那么,如何将变量传递到命令行中?如何告诉命令行不是路径,而是表示路径?TNX系列!python some_script.py --par file_pathfile_path

python 变量 命令行 sys

评论

1赞 Serge Ballesta 8/17/2023
最好使用子进程模块来启动其他进程。AFAIK惊呼。字符是非标准快捷方式。
3赞 juanpa.arrivillaga 8/18/2023
您发布的实际上是无效的 python,这是 IPython 的“魔法”。您可能不应该将它用于这样的事情,只需使用该模块即可subprocess
0赞 NeStack 8/18/2023
@SergeBallesta 谢谢,这奏效了!但是当我使用这个包时,打印语句/输出不会显示在屏幕上。我怎样才能做到这一点?我希望输出是即时的,而不是在完成整个过程时。TNX系列subprocess
0赞 Serge Ballesta 8/19/2023
这取决于您使用的确切语法...而且你不在这里显示!更仔细地查看模块文档或提出新问题。

答:

0赞 Ocean Fig 8/17/2023 #1

若要将变量的值作为参数传递给命令行命令,可以使用字符串格式或串联来构造命令,如下所示:

import subprocess

def func(file_path):
    command = f"python some_script.py --par {file_path}"
    subprocess.run(command, shell=True)

func('/some/file/path/file.csv')

评论

0赞 Bibhav 8/18/2023
你确定这不是人工智能生成的答案吗?
0赞 NeStack 8/18/2023
欢迎来到 Stackoverflow,感谢您的回复,它完成了工作!
0赞 NeStack 8/18/2023
另一件事 - 使用此包时,打印语句/输出不会显示在屏幕上。我怎样才能做到这一点?我希望输出是即时的,而不是在完成整个过程时。TNX系列subprocess