如何在Python程序中运行Unix命令

如何在Python程序中运行Unix命令Unix是由KenThompson和DennisRitchie在1969年左右在AT&T贝尔实验室开发的操作系统。我们可以使用许多有趣的Unix命令来执行不同的任务。问题是,我们可以直接在Python程序中使用此类命令吗?这就是我将在本教程中向您展示的内容。Unix命令ls列出目录中的所有文件。如果在Python脚本中按原样放置ls,则在运行程序时将得到以下内容:Tra…

大家好,又见面了,我是你们的朋友全栈君。

Unix是由Ken Thompson和Dennis Ritchie在1969年左右在AT&T贝尔实验室开发的操作系统。 我们可以使用许多有趣的Unix命令来执行不同的任务。 问题是,我们可以直接在Python程序中使用此类命令吗? 这就是我将在本教程中向您展示的内容。

Unix命令ls列出目录中的所有文件。 如果在Python脚本中按原样放置ls ,则在运行程序时将得到以下内容:

Traceback (most recent call last):
  File "test.py", line 1, in <module>
    ls
NameError: name 'ls' is not defined

这表明Python解释器将ls视为变量,并要求对其进行定义(即初始化),而没有将其视为Unix命令。

os.system()

解决此问题的一种方法是使用Python的os模块中的os.system()

如文档中所述, os.system()

在子外壳程序中执行命令(字符串)。 这是通过调用标准C函数system()来实现的,并且具有相同的限制。

因此,我们可以在Python中运行ls命令,如下所示:

import os
os.system('ls')

这将返回当前目录( .py程序所在的位置)中的文件列表。

让我们再举一个例子。 如果要返回当前日期和时间,可以使用Unix命令date ,如下所示:

import os
os.system('date')

就我而言,这就是上面脚本的结果:

Tue May 24 17:29:20 CEST 2016

呼叫()

尽管os.system()可以工作,但是不建议使用os.system() ,因为它被认为已过时且已过时。 推荐使用的解决方案是Python的subprocess模块call(args)函数。 如有关此功能的文档中所述:

运行args描述的命令。 等待命令完成,然后返回returncode属性。

如果要使用此方法运行ls Unix命令,则可以执行以下操作:

from subprocess import call
call('ls')

让我们看看如何使用subprocess模块返回日期,但是让这个例子更有趣。

import subprocess 
time = subprocess.Popen('date', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = time.communicate()
print 'It is', output

可以使用check_output()更简单地运行以上示例,如下所示:

import subprocess 
time = subprocess.check_output('date')
print 'It is', time

以上脚本的输出为:

It is Tue May 24 19:14:22 CEST 2016

上面的示例显示了使用不同subprocess函数的灵活性,以及​​如何将结果传递给变量以执行进一步的操作。

结论

正如我们在本教程中看到的那样,可以使用subprocess模块来调用和执行Unix命令,当通过其不同功能使用Unix命令时,该模块提供了很大的灵活性。 您可以从Python文档中了解有关此模块及其不同功能的更多信息。

翻译自: https://code.tutsplus.com/articles/how-to-run-unix-commands-in-your-python-program–cms-25926

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142768.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月10日 下午5:20
下一篇 2022年5月10日 下午5:20


相关推荐

  • 最新kali之crunch

    最新kali之crunch描述 从字符集生成单词表 Crunch 可以根据您指定的条件创建单词表 紧缩的输出可以发送到屏幕 文件或另一个程序 必需的参数是 min len 您想开始处理的最小长度字符串 即使对于不使用该值的参数 此选项也是必需的 max len 您希望收紧的最大长度字符串 即使对于不使用该值的参数 此选项也是必需的 charsetstrin 您可以在命令行上指定要使用的字符集的字符集 或者如果留为空白 则字符集将使用默认字符集 顺序必须是小写字母 大写

    2026年3月17日
    2
  • Eclipse Building Workspace 编译慢 解决办法

    在svn下载的项目都会一般都会有一个 .project 的文件,在导入项目前将改文件中的一些验证属性删除掉   去掉Validator 相关的,  如:                    org.eclipse.wst.jsdt.core.javascriptValidator                                   

    2022年2月24日
    42
  • mac 版本 idea 2021.4激活码免费【在线破解激活】[通俗易懂]

    mac 版本 idea 2021.4激活码免费【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    79
  • 完整教程:用deepseek部署全自动的机器人–bytebot

    完整教程:用deepseek部署全自动的机器人–bytebot

    2026年3月16日
    3
  • 在Pycharm中安装Pandas库方法(简单易懂)

    在Pycharm中安装Pandas库方法(简单易懂)Python Anaconda Pandas 以及 PyCharm 的安装文章来源 企鹅号 Michael 的笔记本开发环境的搭建是一件入门比较头疼的事情 在上期的文稿基础上 增加一项 Anaconda 的安装介绍 Anaconda 是 Python 的一个发行版本 安装好了 Anaconda 就相当于安装好了 Python 并且里面还集成了很多 Python 科学计算的第三方库 比如我们需要用到的 Pandas

    2026年3月27日
    2
  • 洗牌算法思路_随机洗牌算法

    洗牌算法思路_随机洗牌算法1.背景    笔试时,遇到一个算法题:差不多是在n个不同的数中随机取出不重复的m个数。洗牌算法是将原来的数组进行打散,使原数组的某个数在打散后的数组中的每个位置上等概率的出现,刚好可以解决该问题。2.洗牌算法    由抽牌、换牌和插牌衍生出三种洗牌算法,其中抽牌和换牌分别对应Fisher-YatesShuffle和Knuth-DurstenfeldShhuffle算法。 …

    2026年2月12日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号