栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用Python Popen做多个参数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用Python Popen做多个参数?

要直接回答您的问题,请阅读以下内容。但是您的程序存在很多问题,我在“更好的实践”中介绍了其中的一些问题。


默认情况下,

subprocess.Popen
命令以字符串列表形式提供。

但是,您也可以使用该

shell
参数执行命令“格式设置与在shell提示符下键入时完全相同”。

没有:

>>> p = Popen("cat -n file1 file2")

是:

>>> p = Popen("cat -n file1 file2", shell=True)>>> p = Popen(["cat", "-n", "file1", "file2"])

这两个选项之间存在许多差异,并且每个选项都有有效的用例。我不会尝试总结差异-
这些

Popen
文档已经做得很好。


因此,对于您的命令,您将执行以下操作:

cmd = "gnome-terminal -x sudo git clone git://github.com/pererinha/gedit-snippet-jquery.git && sudo cp -f gedit-snippet-jquery/js.xml /usr/share/gedit/plugins/snippets/js.xml && sudo rm -rf gedit-snippet-jquery"p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT,          close_fds=False)

更好的做法

但是,使用Python作为许多系统命令的包装并不是一个好主意。至少,您应该将命令分解为单独的Popens,以便可以适当地处理非零退出。实际上,此脚本似乎更适合作为Shell脚本。但是,如果您坚持使用Python,则有更好的做法。

os
模块应代替对
rm
和的调用
cp
。虽然我没有经验,但您可能希望查看类似GitPython的工具来与Git存储库进行交互。

兼容性问题

最后,您应谨慎拨打

gnome-terminal
sudo
。并非所有的GNU /
Linux用户都运行Ubuntu,也不是每个人都拥有
sudo
或安装了GNOME终端模拟器。在当前形式下,如果发生以下情况,您的脚本将崩溃,但无济于事:

  • sudo
    命令未安装
  • 该用户不在
    sudoers
    组中
  • 用户不使用GNOME或其默认终端仿真器
  • 未安装Git

如果您愿意假设您的用户正在运行Ubuntu,则调用

x-terminal-emulator
gnome-terminal
直接调用要好得多,因为它可以调用他们安装的任何终端模拟器(例如
xfce4-terminal
,对于Xubuntu用户)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639570.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号