如何在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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Word中怎样删除分节符而不影响前节页面设置

    Word中怎样删除分节符而不影响前节页面设置

    2021年11月6日
    139
  • Could not get a resource from the pool 问题解决

    Could not get a resource from the pool 问题解决Couldnotgetaresourcefromthepool问题解决今天测试项目的时候,界面提示Couldnotgetaresourcefromthepool报错信息。登录后台,查询对应的java报错日志报错信息:redis.clients.jedis.exceptions.JedisConnectionException:Couldnotgetaresourcefromthepool到这里可以确定的是redis连接出了问题。..

    2025年7月29日
    0
  • Docker卸载_退出docker容器命令

    Docker卸载_退出docker容器命令##1)进入docker的安装目录cd/usr/local/bin/##2)删除与docker相关的文件夹sudorm-rfdocker*sudorm-rfcom.docker.*sudorm-rfhub-tool*sudorm-rfkube*sudorm-rfvpnkit*完成!

    2022年9月8日
    1
  • 你所选择的栏目与当前模型不相符请选择白色的选

    你所选择的栏目与当前模型不相符请选择白色的选

    2021年9月19日
    49
  • Mina框架的使用[通俗易懂]

    什么是Mina框架ApacheMina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Javanio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。是用来代替NIO网络框架的,对NIO框架进行了一层封装的Socket库。Mina主页下载地址为什么使用Mina?传统socket:阻塞式通信每建立一个Socket连接时,同时创建一个新线程对该Soc

    2022年4月17日
    91
  • 2021-11-13 2021年煤矿井下电气考试题库及煤矿井下电气考试资料

    2021-11-13 2021年煤矿井下电气考试题库及煤矿井下电气考试资料题库来源:安全生产模拟考试一点通公众号小程序安全生产模拟考试一点通:煤矿井下电气考试题库是安全生产模拟考试一点通总题库中生成的一套煤矿井下电气考试资料,安全生产模拟考试一点通上煤矿井下电气作业手机同步练习。2021年煤矿井下电气考试题库及煤矿井下电气考试资料1、【多选题】短路电流的大小与()有关。(BCDE)A、电动机的额定功率B、电缆的长度C、电缆的截面D、电网电压E、变压器的容量F、电动机的负荷2、【多选题】漏电保护方式主要有()。(ABC)A、附加直流电源式B

    2022年9月26日
    0

发表回复

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

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