【问题标题】:What would be a more pythonic way of constructing this command and running it构建此命令并运行它的更 Pythonic 方式是什么
【发布时间】:2017-11-21 18:04:10
【问题描述】:
os.system(sys.executable+" "+sys.prefix+"/bin/"+arg)

这是 qpython for android 附带的 pip 控制台应用程序的一部分

【问题讨论】:

  • os.system("".join([sys.executable, " ", sys.prefix, "/bin/", arg])) ?

标签: python python-3.x qpython3


【解决方案1】:

更好的方法可能是使用subprocess.runos.path.join

from subprocess import run
from os.path import join
from sys import executable, prefix
run([executable, join(prefix, 'bin', arg)])

界面更简洁、更健壮。它还提供了对进程调用方式的更多控制。

请注意,您可以对参数使用列表,而不是人为地连接它们。如果路径包含空格,这会使生活变得更加轻松。

【讨论】:

    【解决方案2】:

    我认为这更像是pythonic,但仍然需要一些东西。

    def modcmd(arg):
        exe = sys.executable + ' '
        prefix = sys.prefix + '/bin/'
        cmd = exe + prefix + arg
        os.system('clear')
        os.system(cmd)
    

    【讨论】:

    • 这个函数在 REPL 中运行。我喜欢在显示下一个命令的输出之前清除屏幕。
    • 我不认为这更像 Pythonic:您仍在使用相同的函数并使用字符串连接构造路径。
    • os.system 的文档本身建议使用 subprocess 模块。
    • 它更pythonic,因为它更漂亮。
    • @RickyWilson。它并不漂亮。它以微妙的方式混淆代码,例如exe 中有一个空格。而且更多 Pythonic 并不是更漂亮的代名词。
    猜你喜欢
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 2022-06-15
    • 2019-10-15
    • 2010-11-22
    • 1970-01-01
    相关资源
    最近更新 更多