shellpython腳本
① 如何執行shell命令行,這樣如何執行python腳本
os.system("Thecommandyouwant").這個調用相當直接,且是同步進行的,程序需要阻塞並等待返回。返回值回是依賴於系統答的,直接返回系統的調用返回值,所以windows和linux是不一樣的os.popen(command[,mode[,bufsize]]),圖中是一個例子.可以看出,popen方法通過p.read()獲取終端輸出,而且popen需要關閉close().當執行成功時,close()不返回任何值,失敗時,close()返回系統返回值.可見它獲取返回值的方式和os.system不同。3使用commands模塊,圖中是一組例子。根據你需要的不同,commands模塊有三個方法可供選擇。getstatusoutput,getoutput,getstatus。
② shell和python腳本學哪個
各有優勢,個人偏向python
跨平台
面向對象,模塊豐富,在解決一些復雜問題時方便點,除了當腳本用也能寫一些比較大的應用程序;
代碼可讀性好,易寫易維護
不過最終還是看工作需要吧
③ 如何用Python交互執行shell腳本
「交互執行shell腳本」是不是說代替人的手動輸入,比如sudo時輸入密碼的操作?
這種情況可以用Pexpect模塊。不是默認的,需要自己裝。
④ 怎麼樣在shell腳本中調用python腳本
直接使用python
後面跟python腳本的文件名就可以
例如:python
tr.py就是在shell中執行pr.py這個python腳本,見下圖:
⑤ shell腳本和python腳本哪個強大
這兩個沒有可比性。
shell腳本只能和python的自動化相關做個比較,它的針對性強一些。
⑥ perl 、shell、python三種腳本語言那種好學、易用
perl、shell、python三種腳本語言的區別:
1、適用不同:shell是操作linux的基本,是必須學的。學shell就是學linux命令。perl有強大的正則表達式支持,對於文本處理非常強悍,玩linux不得不學。python作用一種面向對象的,能作為linux腳本的語言,學好之後能幫你很好地完成工作。
2、特點不同:Perl是一種能完成任務的語言。從一開始,Perl就設計成可以把簡單工作簡單化,同時又不失去處理困難問題能力的語言。它可以很容易操作數字,文本,文件和目錄,計算機和網路,特別是程序的語言。
這種語言應該很容易運行外部的程序並且掃描這些程序的輸出獲取感興趣的東西。而且它還應該很容易能把這些你感興趣的東西交給其它程序做特殊的處理。當然,這種語言還應該很容易在任何現代的操作系統上可以移植地編譯和運行。
shell提供了你與操作系統之間通訊的方式。這種通訊可以以交互方式(從鍵盤輸入,並且可以立即得到響應),或者以shellscript(非交互)方式執行。
shellscript是放在文件中的一串shell和操作系統命令,它們可以被重復使用。本質上,shellscript是命令行命令簡單的組合到一個文件裡面。Shell基本上是一個命令解釋器,類似於DOS下的command.com。
它接收用戶命令(如ls等),然後調用相應的應用程序。較為通用的shell有標準的Bourneshell(sh)和Cshell(csh)。
Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格,Python的這種偽代碼本質是它最大的優點之一。它使你能夠專注於解決問題而不是去搞明白語言本身。
3、優點不同:perl,用作文本處理比較好,可以作為系統的輔助工具。shell,用作系統維護、操作等方面。python,功能強大,模塊多、跨平台能力好,完全面向對象,尤其適用做大型腳本程序的開發和快速開發。
(6)shellpython腳本擴展閱讀:
erl比shell+sed+awk更強大,但學習兩者並不沖突,通常是學習shell做為腳本編程的入門基礎。而Python在應用領域則與前兩者有很大的差別,無太大的可比性。面向不同的任務,可以只需用到其中的一種,也可能三種都要用到,所以究竟該學誰不學誰,需要由面對的任務來決定。
總之,shell是基礎,其他是進階輔助。
Shell腳本通常都是以.sh為後綴名的,這個並不是說不帶.sh這個腳本就不能執行,只是大家的一個習慣而已。所以,以後你發現了.sh為後綴的文件那麼它一定會是一個shell腳本了。
test.sh中第一行一定是「#!/bin/bash」它代表的意思是,該文件使用的是bash語法。如果不設置該行,那麼你的shell腳本就不能被執行。』#』表示注釋。後面跟一些該腳本的相關注釋內容以及作者和創建日期或者版本等等。
⑦ Linux下編寫腳本Shell和Python的區別
題主問的是調用命令,那當然是 POSIX 系 Shell 不羅嗦。如果你要個調用命令還算可以並且寫起來舒服點的語言,建議找 Ruby 去。
另
外偏題去說 Shell 不是系統級編程語言的我也是醉了,我還真沒看到過沒有 Shell 能幹活的 Unix/Linux 傢伙的,就連你個
sysVinit 也得靠 shell 啊。並且你還觸碰到了 Unix 狂魔的 G 點——Shell 用戶萬能的膠水能力被丟到哪裡去了?隨便起一個
Python Shell 抓住 stdin 灌或者 /tmp 丟個文件喂,你能乾的我全都能幹(這是認真的,參見 makeself 等自解壓
shell 腳本形式)。
講 Google Style Guide 的算是靠了點譜(雖然還是丟下了調用命令這回事),問題是 Google 還不許用 C++ STL 呢你怎麼不說?Bash 這玩意,認真寫的人文件頭都 source 一組小庫的。
嗯上面三段講的是調用命令這個需求、最小依賴這個優點和語言本身不常被嚴肅使用(放著功能禁止用)這回事。
接下來的內容嚴重不友善,涉及大量打岔,請題主手動忽略。大概大家都看得出我和生意人在微博上有些觀點上的矛盾,我也承認匿名這樣黑不大好。但是這和用 Shell 開命令搞管道膠水一樣爽啊,我怎麼會放棄?
稍有常識的人都能看出,LibreWindows 冒泡排序的 shell 腳本完全不是用和 py 同一種風格寫出來的。我在這里做了較為忠實的翻譯:
#!/bin/bash
orig=(12 5 13 8 9 65)
# paramaters[] -> list[]
bubble(){
list=("$@")
local size=$((${#list[@]}-1)) i sorted=0 t
until ((sorted)); do
sorted=1
for ((i=0;i<size;i++)); do
if ((list[i] > list[i+1])); then
sorted=0;
t="${list[i]}" list[i]="${list[i+1]}" list[i+1]="$t"
fi
done
done
}
bubble "${orig[@]}"
echo ${list[@]}
: << _NOTES
Real unix-shelly way:
sorted=$(for i in ${orig[@]}; do echo $i; done | sort -g)
sorted=$($sorted)
echo ${sorted[@]}
_NOTES
Bash 的完整版本可以使用 declare -n 創建引用類型的變數,但是 Cygwin 上的 bash 沒編譯進去我也就先不用吧。
提
請閣下注意一點,數組本非古老的 Shell 所支持的,She-bang 不應調用 /bin/sh 而應使用 /bin/bash 執行。Bash
帶著鐐銬做這種拓展還要拿來說就算了,還強行醜化代碼不開高亮接著便是叫人「感受一下」,大概也是先生您在微博上常用的套路了。另外我承認論現代編程
Shell 不如 Python,也承認 WoSign/CNNIC 驗證就是比資本主義快。
啊我忘了一點,這個問題本來就是討論調用命令的,你跟我扯一般計算幹啥?
不要問我是誰,我只是個買辣條的。
⑧ shell腳本與python如何結合起來呢
os.system(command)這個函數可以調用shell運行命令行command並且返回它的返回值。試一下在python的解釋器里輸入os.system(」ls
-l」),就可以看到」ls」列出了當前目錄下的文件。可以說,通過這個函數,python就擁有了shell的所有能力。
⑨ shell 腳本轉 python 腳本問題
1 確保test.sh具有可執行許可權:$sudo chmod a+x test.sh
2python代碼:
import shlex
import subprocess
def popen(args):
if type(args) != type([]):
args = shlex.split(args)
proc = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
(output, errput) = proc.communicate()
proc.wait()
return output + errput
if __name__ == '__main__':
args = ['test.sh']
log = popen(args)