日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python echo命令_如何用Python调用外部命令

發布時間:2024/7/23 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python echo命令_如何用Python调用外部命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解決方法

方法1:我們可以使用subprocess,比如要執行 ls -l 命令

import subprocess

subprocess.run("ls", "-l")

Python3.5 之前的版本,需要使用 call

import subprocess

subprocess.call(["ls", "-l"])

方法2:

import os

os.system("ls -l")

os.popen("ls -l").read()

方法討論:

問題解決了,那么os.system 和 subprocess哪個解決方法更好呢?這里做簡單討論,雖然os.system 和 subprocess 都能完成外部命令功能,但是subprocess比system更加靈活(subprocess 我們可以得到 stdout,stderr 以及更好的錯誤處理等等)。并且官方文檔也是更建議subprocess模塊。

總覺:

1、os.system("some_command with args"):將命令和參數傳給系統shell,這個方法可以一次執行多條命令,并且可以建立管道重定向。

os.system("some_command < input_file | another_command > output_file ")

盡管這種方式很簡便,但是你不得不手工處理一些特殊字符例如空格等。

2、stream = os.popen("some_command with args"):實現功能和os.system是一樣的,但是os.popen會返回一個類文件對象,讓你看到命令的執行結果。

stream = os.popen("ls -l")

stream.read()

3、subprocess 的 Popen 類,建議盡量使用它來替代os.popen,但是使用的時參數會相對復雜

print(subprocess.Popen("echo Hello Worldd", shell=True, stdout=subprocess.PIPE).stdout.read())

而不建議使用

print(os.popen("echo Hello World")).read()

4、subprocess 模塊中 call 函數,功能和Popen類相似,并且使用相同的參數,但是它僅僅在命令執行完畢后,返回一個代碼

return_code = subprocess.call("echo Hello World", shell=True)

0 # 執行成功

5、如果使用時Python3.5及以上版本,可以使用subprocess.run函數,它跟上面介紹的函數基本一樣,但是更加靈活,會在命令執行結束后返回一個CompletedProcess對象。

return_code = subprocess.run("echo Hello World", shell=True)

print return_code

>>> CompletedProcess(args='echo Hello World', return_code=0)

6、雖然os模塊包括fork/exec/spawn等函數,但是并不建議直接使用它們,使用不當會導致意外的結果。

因此如果有需要執行的外部命令的需要,建議使用 subprocess,而非os模塊。

最后,特別要注意如果你要執行的命令是以字符串的形式作為參數,那么必須小心謹慎,否則會造成嚴重的后果!

例如:

print(subprocess.Popen("echo %s" % user_input, stdout=PIPE).stdout.read())

看到這段代碼能想到什么可怕的事情嗎?如果有人給 user_input 傳遞的是“my mama didnt love me && rm -rf /”,是不是頭皮發麻!所以謹慎再謹慎!盡量不做交互是輸入,而是在程序中將要執行的命令,寫‘死’在字符串中,作為常量傳遞。

總結

以上是生活随笔為你收集整理的python echo命令_如何用Python调用外部命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。