pythonshell輸出
1. python,awk,shell格式化輸出內容全解
話不多說,直接開始
eg:
echo "linux" | awk '{printf "|%-15s|\n",$1}'
|Linux |
說明:對於echo命令的輸出,Linux是經管道發給awk。printf函數包含一個控制串。百分號讓printf做好准備,它要列印一個佔15個格、向左對齊的字元串,這個字元串夾在兩個豎杠之間,並且以換行符結尾。百分號後的短劃線表示左對齊。控制串後面跟了一個逗號和$1。printf將根據控制串中的格式說明來格式化字元串Linux。
echo "Linux" | awk '{printf "|%15s|\n",$1}'
| Linux|
說明:字元串Linux被列印成一個佔15 格、向右對齊的字元串,夾在兩個豎杠之間,以
換行符結尾。
cat employees
Tom Jones 4424 5/12/66 543354
Mary Adams 5346 11/4/則消63 28765
Sally Chang 1654 7/22/54 650000
Billy Black 1683 9/23/44 336500
awk '{printf "The name is: %-15s ID is %8d\n", 3}' employees
The name is Tom ID is 4424
The name is Mary ID is 5346
The name is Sally ID is 1654
The name is Billy ID is 1683
說明:要列印的字元串放置在兩個雙引號之間。第一個格式說明符是%-15s,它對應的參數是$1,緊挨著控制串的右半邊引號後面的那個逗號。百分號引出格式說明:短劃運氏線表示左對齊,15s表示佔15格的字元串。這條命令用來列印一個左對齊、佔15格的字元串,後面跟著字元串的ID和一個整數。
echo -e識別轉義和特殊意義的符號,如換行符、n、製表符\t、轉義符\等。
[root@xuexi tmp]# echo 'Hello World!\n';echo "Hello World"!
Hello World!\n
Hello World!
[root@xuexi tmp]# echo -e 'Hello World!\n';echo "Hello World"!
Hello World!
Hello World!
printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 楊過 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
運行
姓名 性別 體重kg
郭靖 男 66.12
楊過 男 48.65
郭芙 女 47.99
%s %c %d %f都是格式替代符
%-10s 指一個寬度為10個字元(-表示左對齊,沒有則表示右對齊),任何字元都會被顯示在10個字元寬的字元內,如果不足則自動以孫悄知空格填充,超過也會將內容全部顯示出來。
%-4.2f 指格式化為小數,其中.2指保留2位小數。
eg:
printf "%d %s\n" 1 "abc"
printf %s abcdef
printf %s abc def
printf "%s %s %s\n" a b c d e f g h i j
等等等等
希望大家了解一下
2. python 3.8.2 shell 可以輸出函數圖像么怎麼輸出函數圖像求助大神
用matplotlib這個庫繪圖
3. python怎麼獲得shell的輸出
執行如下shell命令消盯:$ python my.py > out.txt 2> err.txt則err.txt中會存有執行派顫腳本my.py的錯誤輸拿羨和出,out.txt中會含有正常的print結果。
4. Python shell中為啥有時候輸出的前面或下面有個點
這種紅橡爛色梁蔽漏的 感覺是輸出到errout的,你看看你的代碼里有沒並唯有相應的內容
或者 看看代碼有沒有錯誤
5. python調用shell腳本 獲取shell腳本中間的輸出值
import os
ss=os.popen("sh test.sh").readlines()
print ss
6. Python為什麼無法在shell上覆蓋輸出一行
print語句是標准輸出,就是按順序來的,不會覆蓋。
7. python3 獲取shell輸出的信息
print函數本身即可以將內容輸出到文件內。示例如下:
……
open("print_content.txt", "w") as file_out:
pass
print("hello", file = file_out)
file_out.close()
……
8. Python將Shell中的信息,導出到txt
可以用try...catch...捕獲異常,然後將異常信息寫入txt文檔或者記錄到日誌文件中,具體代碼如下:
寫入txt文件
try:
importsome_mole
catchImportErrorase:
withopen("a.txt","w")asf:
f.write(e)寫入日誌模塊(納圓仔標准庫中的logging模塊)
FORMAT='%(asctime)-15s%(levelname)s%(filename)s[line:%(lineno)d]:%(message)s'
logging.basicConfig(
format=FORMAT,
level=logging.DEBUG,
腔攔filename="log.log",
filemode='w'
)
try:
洞汪importsome_mole
catchImportErrorase:
logging.error(e)
9. python怎麼執行shell命令
工具/原料
Python環境
方法/步驟
os.system("The command you want"). 這個調用相當直接,且是同步進行的,程序需要阻塞並等待返回。返回值是依賴於系統的,直接返回系統的調用返回值,所以windows和linux是不一樣的
os.popen(command[,mode[,bufsize]]),
圖中是一個例子.
可以看出,popen方法通過p.read()獲取終端輸出,而且popen需要關閉close().當執行成功時,close()不返回任何值,失敗
時,close()返回系統返回值. 可見它獲取返回值的方式和os.system不同。
使用commands模塊,圖中是一組例子。根據你需要的不同,commands模塊有三個方法可供選擇。getstatusoutput, getoutput, getstatus。
但是,如上三個方法都不是Python推薦的方法,而且在Python3中其中兩個已經消失。Python文檔中目前全力推薦第四個方法,subprocess! subprocess使用起來同樣簡單:
直
接調用命令,返回值即是系統返回。shell=True表示命令最終在shell中運行。Python文檔中出於安全考慮,不建議使用
shell=True。建議使用Python庫來代替shell命令,或使用pipe的一些功能做一些轉義。官方的出發點是好的,不過真心麻煩了很多,
so.... 如果你更關注命令的終端輸出,可以如下圖這樣操作, 同樣很簡單.
10. python shell怎麼使用
Python 中執行 Shell 命令有多種方法,stackoverflow 上有對這些方法進行比較的討論,Calling an external command in Python 指出使用subprocess模塊來實現更優。因此,本文說明如何使用subprocess模塊來實現 Shell 腳本的功能。
subprocess模塊提供多種方法來實現執行 Linux 的命令,例如subprocess.call()方法,subprocess.check_call()方法,等。這些方法都是對Popen類的封裝,故本文著重講述Popen類的使用。
執行 Shell 命令
可以通過向Popen()傳遞需要執行的命令來創建一個Popen對象,這樣,便會創建一個子進程來執行命令。例如:
child = subprocess.Popen(["ping","-c","5","leehao.me"])
1
上面的代碼會創建一個子進程來執行ping -c 5 leehao.me命令,這個命令採用列表的形式傳遞給Popen()方法。如果我們想直接採用ping -c 5 leehao.me字元串形式,可以添加shell=True來實現:
child = subprocess.Popen("ping -c 5 leehao.me", shell=True)
1
官方文檔指出由於安全原因故不建議使用shell=True,詳細說明可以參考官方文檔的描述。
等待子進程執行
子進程執行命令後,主進程並不會等待子進程執行。為了讓主進程等待子進程執行結束,需要顯示調用Popen.wait()方法。例如:
child = subprocess.Popen(["ping","-c","5","leehao.me"])
child.wait()
print 'parent finish'
1
2
3
這樣,主進程會等待子進程執行ping命令完畢後,才會列印出parent finish的輸出。
獲取執行結果
為了獲取Popen()子進程的輸出,可以使用Popen.communicate()方法,例如:
def subprocess_cmd(command):
process = subprocess.Popen(command,stdout=subprocess.PIPE, shell=True)
proc_stdout = process.communicate()[0].strip()
print proc_stdout
subprocess_cmd('echo leehao.me; echo www.leehao.me')
1
2
3
4
5
6
輸出:
leehao.me
www.leehao.me
process.communicate()方法可以實現主進程與子進程的通信。主進程可以通過它向子進程發送數據,也可以讀取子進程的輸出的數據。上面的例子中,我們在創建Popen對象時指定stdout=subprocess.PIPE,這樣主進程便可以讀取子進程的輸出。
communicate()方法返回一個元組:(stdoutdata, stderrdata),process.communicate()[0]即獲取子進程的標准輸出。
需要指出的是,調用communicate()方法後,主進程也會等待子進程執行完畢。
上面的例子中,子進程向標准輸出列印兩個字元串,主進程接收到了這些輸出,並列印出來。