【问题标题】:How to send Python variable to bash variable?如何将 Python 变量发送到 bash 变量?
【发布时间】:2012-10-01 07:58:03
【问题描述】:

我正在尝试使用 Python 从列表中选择一个变量,然后使用 bash 命令大声说出它。现在我有这样的东西

foo = ["a","b","c","d"]
from random import choice
x = choice(foo)
foo.remove(x)
from os import system
system('say x')

这里说的是“x”,我需要让它说出x变量的值。

【问题讨论】:

  • 很好,我不知道 Mac OS X 有 say :)
  • 对于好奇的,os.putenv 是如何将变量导出到环境和子进程
  • 你试过system('say ' + str(x))吗?
  • @mgilson 你是正确的,编辑了错误。

标签: python system


【解决方案1】:

你正在传递一个字符串,你可以使用 x 的值

sytem('say {0}'.format(x))

传递字符串时,您可以使用字符串格式。正如您所意识到的,您需要在字符串中获取 x 的值而不是变量 x http://docs.python.org/library/string.html#format-examples

【讨论】:

  • 请注意,这是旧的字符串格式化方式,在新软件中,str.format() 是推荐的方法 - 例如:system('say {0}'.format(x))
【解决方案2】:

我想你可以使用os.system,但最好是subprocess

import subprocess
subprocess.call(['say',x])

【讨论】:

    【解决方案3】:

    使用字符串格式:

    In [9]: x="ls -ld"
    
    In [10]: os.system("{0}".format(x))
    drwxr-xr-x 41 monty monty 4096 2012-10-10 22:46 .
    Out[10]: 0
    

    【讨论】:

    • os.system 不灵活,容易出错且不安全。 subprocess 模块为此提供了更好的功能。
    • "{0}".format("value") 是一种非常复杂的表达方式 "value"
    【解决方案4】:

    你可以使用format:

    system('say {}'.format(x))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多