将os.system()的输出存储在变量中

时间:2017-12-17 19:35:23

标签: linux python

我为Hangman游戏生成一个随机单词,因此想生成一个随机单词。

我正在使用/usr/share/dict/words文件并执行以下操作:

def word_select():
    import os
    word = os.system('head -$((${RANDOM} % `wc -l < /usr/share/dict/words` + 1)) /usr/share/dict/words | tail -1')
    return word

但是当我检查word的值时,它的值为0(这很可能是圆括号中命令的退出状态)。如何在变量中存储单词?

2 个答案:

答案 0 :(得分:4)

不要从Python调用shell命令。 您可以在Python中执行shell命令可以执行的所有操作。 在纯Python或纯Bash中实现它会更好。

您的任务的简单实现是将/usr/share/dict/words的全部内容读入列表,然后使用random模块随机选择项目。 此解决方案的优点是它只扫描文件内容一次。它的缺点是读取内存中的内容。 (因为它不到1MB,对现代系统来说应该是一个可以忽略不计的问题。)

答案 1 :(得分:2)

如果您想在Python中执行此操作,请改用subprocess模块。

类似的东西:

Python 3.5.3 (default, Jan 19 2017, 14:11:04) 
[GCC 6.3.0 20170118] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> myVariable = subprocess.check_output(["uptime"])
>>> myVariable
b' 20:48:53 up 42 min,  1 user,  load average: 0,21, 0,26, 0,26\n'

官方文档here