2016-05-05 68 views
0

我學到了以下代碼,通過從「mylabList.txt」文件中讀取主機名,給出了主機名及其IP地址,現在我正在尋找打印輸出的方式漂亮人力從柱狀頭可讀在每個的頂部,然後將名稱(下面說)..在Python中打印頭部信息爲人類的可讀性

有辦法設置列之間的寬度而打印...

#!/usr/bin/python 

import sys 
import socket 
with open("mylabList.txt", 'r') as f: 

    for host in f: 
     print("{0[0]}\t{0[2][0]}".format(socket.gethostbyname_ex(host.rstrip()))) 

電流輸出是像:

mylab1.example.com 172.10.1.1 
mylab2.example.com 172.10.1.2 
mylab3.example.com 172.10.1.3 
mylab4.example.com 122.10.1.4 

預期成果是:

Server Name  IP ADDRESS 
=================================== 
mylab1.example.com  172.10.1.1 
mylab2.example.com  172.10.1.2 
mylab3.example.com  172.10.1.3 
mylab4.example.com  122.10.1.4 

剛一說明。在我的輸出Srever名稱的lenghth是高達30個字符長。

+0

你看過[tabulate](https://pypi.python.org/pypi/tabulate)嗎?見[這篇文章](https://stackoverflow.com/questions/5909873/python-pretty-printing-ascii-tables) – CoryKramer

+0

http://stackoverflow.com/questions/9535954/python-printing-lists-as-tabular -data –

+0

@CoryKramer ...我沒有列表模塊在我的系統中,雖然我是一個Python的新手只是試圖瞭解它是如何安裝的。 – rocky1981

回答

0

你可以使用ljust和rjust

http://www.tutorialspoint.com/python/string_ljust.htm http://www.tutorialspoint.com/python/string_rjust.htm

print("A String".ljust(30, " ") + "Another String") 

結果

A String      Another String 

這是一個可能的方式做的伎倆:

#!/usr/bin/python 

import sys 
import socket 
print("Server Name".ljust(30, " ") + "IP ADRESS") 
print("="*39) 
with open("mylabList.txt", 'r') as f: 
    for host in f: 
     print("{0[0]}\t{0[2][0]}".format(socket.gethostbyname_ex(host.rstrip()))) 
+0

它在某種程度上接近於目標,但它僅執行打印標題,並證明兩個標題字符串之間的空間不僅僅是輸出列。 '服務器名稱IP地址' '=======================================' 因此,原始的Servername和IP地址之間的空間保持不變。 – rocky1981