如何在Python程序中运行Unix命令
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
總結
以上是生活随笔為你收集整理的如何在Python程序中运行Unix命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UML建模规范图示
- 下一篇: python基线计算法_从头开始:用Py