如何在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年7月26日
    5
  • 免费开放api接口_免费API

    免费开放api接口_免费API抖音短视频无水印解析:http://api.63code.com/douyin2、皮皮虾视频无水印解析:http://api.63code.com/pipixia3、b站视频解析:http://api.63code.com/bili4、必应每日壁纸:http://api.63code.com/bing5、网易云音乐解析:http://api.63code.com/wyy6、垃圾分类查询:http://api.63code.com/garbage7、icp备案查询:http://…

    2022年9月28日
    1
  • gitlab与github区别_gitlab和github账号互通么

    gitlab与github区别_gitlab和github账号互通么最近写项目不用svn也不用github了,而是用gitlab,其实和github使用方法一样,不过操作界面比github更丰富,功能更多……然后我们用的阿里云的代码管理正是gitlab,创建我们公司的私有项目!那么讲讲github和gitlab的区别。GitLab:利用RubyonRail开发的开源应用程序,实现一个自托管的Git项目仓库,可以通过web界面进行访问公开的或者私人项目。RubyonRail是一个使你开发、部署、维护web应用程序变得简单的框架。GitLab拥有与GitHub

    2025年8月18日
    2
  • Pytest(6)重复运行用例pytest-repeat

    Pytest(6)重复运行用例pytest-repeat前言平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,

    2022年8月6日
    4
  • ieee754标准一个浮点数由什么组成_某数采用ieee754单精度浮点数格式

    ieee754标准一个浮点数由什么组成_某数采用ieee754单精度浮点数格式浮点数(Floating-pointNumber)是对实数的一种近似表示,由一个有效数字(即尾数)加上幂数来表示,通常是乘以某个基数的整数次幂得到。以这种表示法表示的数值,称为浮点数。

    2025年8月22日
    3
  • PhpSpreadsheet 学习和使用

    PhpSpreadsheet 学习和使用1、安装composerrequirephpoffice/phpspreadsheet2、usePhpOffice\PhpSpreadsheet\Spreadsheet;usePhpOffice\PhpSpreadsheet\Writer\Xlsx;usePhpOffice\PhpSpreadsheet\Style\Alignment;usePhpOffice\Ph…

    2022年9月17日
    0

发表回复

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

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