2010-09-16 250 views
45

我前段時間在某處讀過這篇文章,但似乎找不到它。我試圖找到一個將在終端執行命令然後輸出結果的命令。Python腳本在終端執行命令

例如:該腳本將是:

command 'ls -l' 

它將出運行在終端

回答

89

有幾種方法可以做到這一點:

一個簡單的方法是使用os模塊:用於 :

import os 
os.system("ls -l") 

更復雜的事情可以與子模塊來實現例如:

import subprocess 
test = subprocess.Popen(["ping","-W","2","-c", "1", "192.168.1.70"], stdout=subprocess.PIPE) 
output = test.communicate()[0] 
+16

我不想讓你失望,但。你應該使用子進程處理所有事情。這樣更安全。 subprocess.call()會給你一個很好的界面,以取代簡單的調用形式。 – 2011-03-24 20:35:43

+0

感謝您的答覆隊友。將在Ubuntu桌面上使用python作爲我的第一個應用程序,這對我真的很有幫助。 – LinuxBill 2013-01-16 10:55:10

+0

如何獲得命令的完整響應,'os.system(「nslookup gmail.com」)'只返回最後一行'0',但我想獲得完整的響應。 – 2015-11-29 10:06:02

1

您應該還考慮commands.getstatusoutput

這將返回長度爲2的元組.. 第一個是返回整數(0 - 當所述命令是成功的) 第二是如將在終端中所示的整個輸出。

對於LS

import commands 
    s=commands.getstatusoutput('ls') 
    print s 
    >> (0, 'file_1\nfile_2\nfile_3') 
    s[1].split("\n") 
    >> ['file_1', 'file_2', 'file_3'] 
-5

在桌面GUI,(有些你可能不使用它),你可以leafpad桌面快捷方式,它有它的命令來打開deignated文件。如果你複製並粘貼到你的Python解釋器中,它應該可以工作。 (我不能確定這會工作,但爲什麼不試試!) 對不起,所有的拼寫錯誤...我只有11. 這個信息是不是組成!這只是我在製作一個名字時很懶惰!請記住,我只有11歲!

+0

lol whattttttttt – mikebertiean 2017-09-07 16:37:13

+0

lmfao這是什麼 – Gianlucca 2017-12-08 19:43:40

8

我更喜歡子模塊的用法:

from subprocess import call 
call(["ls", "-l"]) 

原因是,如果你想傳遞一些變量在腳本這給了非常簡單的方法,例如採用代碼

abc = a.c 
call(["vim", abc]) 
下面的部分
0
import os 
os.system("echo 'hello world'") 

這應該工作。我不知道如何將輸出打印到python Shell中。