如何在os.system中使用python变量?

AleksiVäisänen

我正在用python创建小型控制台脚本,我想在其中放入cowsay命令,但是cow会说出变量的名称,其中的字符串是字符串,而不是变量内部的字符串。我怎样才能让牛说出变量中的字符串?

if (command == 'cow'):
    word = raw_input('What does the cow say?  ')
    os.system('cowsay word')
ch3ka

懒惰的解决方案是简单地将单词串联起来:

>>> import os
>>> word="moo"
>>> os.system('cowsay ' + word)
 _____ 
< moo >
 ----- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
0

但是您不应该这样做。如果用户输入moo; rm -rf /怎么办?猜猜会发生什么。同样,word="$(cat /etc/passwd)"word="$aliases"或带有反引号的单词将产生非预期的结果。

您应该使用Subprocess模块,该模块负责转义shell args和构造调用:

>>> import subprocess
>>> subprocess.Popen(['cowsay', word])
<subprocess.Popen object at 0x7fe8c7656c18>
>>>  _____ 
< moo >
 ----- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

使用.communicate()简单的调用,如在下面的示例中的文档或如所描述的。现在您不必担心注射:

>>> word="$(cat /etc/passwd)"
>>> stdout, stderr = subprocess.Popen(
                     ['cowsay', word]).communicate()
 ____________________ 
< $(cat /etc/passwd) >
 -------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在os.system的bash命令中使用Python变量

来自分类Dev

如何在python中使用bash变量

来自分类Dev

如何在Python中使用'os.system('command')'向CMD发送命令列表

来自分类Dev

如何在Python中使用'os.system('command')'向CMD发送命令列表

来自分类Dev

如何在system()中使用C代码变量

来自分类Dev

如何在Windows OS中使用GtkSocket?

来自分类Dev

如何在Python中使用os.execve

来自分类Dev

如何在Python中使用os.execve

来自分类Dev

如何在mysql和python中使用使用绑定变量

来自分类Dev

如何在Python中使用self声明空变量

来自分类Dev

如何在Python中使用先前作用域中的变量

来自分类Dev

如何在Python中的不同类中使用变量?

来自分类Dev

如何在Python中使用单个变量删除2列

来自分类Dev

如何在Python中使用变量作为属性

来自分类Dev

如何在python脚本中使用shell变量

来自分类Dev

如何在循环python外的for循环中使用变量

来自分类Dev

如何在python中使用__all__动态导出变量?

来自分类Dev

如何在Python中使用变量作为数组索引?

来自分类Dev

如何在Sublime中使用python变量运行函数

来自分类Dev

在Python中如何在调用函数中使用变量?

来自分类Dev

如何在python中的变量中使用INSERT INTO

来自分类Dev

如何在Python中使用self声明空变量

来自分类Dev

如何在python的请求库中使用变量

来自分类Dev

如何在Python中的PostgreSQL中使用变量

来自分类Dev

如何在Python中使用全局变量

来自分类Dev

如何在PHP的变量中使用变量?

来自分类Dev

如何在os.system中传递变量?

来自分类Dev

如何在 C++ 中的 system() 函数中使用字符串变量

来自分类Dev

如何在Python中读取* new * OS环境变量?

Related 相关文章

热门标签

归档