[英]Python output beautifier subprocess
您好,我正在使用subprocess
。
import subprocess
proc = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
output = proc.stdout.read()
print(output)
輸出正確
b'file.txt\nmain.py\nsource\ntest-page\n'
有什么辦法可以美化它,就像在 linux 服務器中一樣?
root@master:/home/python# ls
file.txt main.py source test-page
使用split()
by newline 獲取文件,然后在單獨的行上打印每個文件:
lines = output.split(b'\n')
for line in lines:
print(line.decode())
在單獨的行上打印每個文件:
file.txt
main.py
source
test-page
您可以使用
print(output.decode().rstrip().replace("\n", " " * 2))
file.txt main.py source test-page
decode()
是將字節轉成字符串rstrip()
刪除最后一個尾隨的"\n"
,但這是可選的replace("\n", " " * 2))
會將"\n"
(換行符)替換成2個空格ls
使用的垂直格式的背景終端使用空格分隔的柱狀輸出,請參閱ls
上的 GNU 文檔:
'--format=vertical'
在列中列出文件,垂直排序,沒有其他信息。 如果標准輸出是終端,這是
ls
的默認值。 它始終是dir
程序的默認值。 GNUls
使用可變寬度的列在最少的行中顯示盡可能多的文件。
(加粗強調)
這意味着根據最長的文件名調整列寬並且列數可能會有所不同。 但它在列之間使用了 2 個空格。
可以通過str.replace()
實現簡單的兩個空格分隔。
output = b'file.txt\nmain.py\nsource\ntest-page'
vertical = output.decode().replace('\n', ' ' * 2)
print(vertical)
印刷:
file.txt main.py source test-page
一些高級庫可以做到這一點,例如columnar 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.