2017-04-04 144 views
1

我有一些使用for循環打印的變量。使用下面的函數將它們寫入文件中。Python - 以表格格式寫入文件

def writeToServiceFile(file,svc,nodes,idd,i): 
    my_file=open(file,"a") 
    my_file.write(str(id)+"\t"+nodes+"\t"+svc+"\t"+str(i)+"\n") 
    my_file.close() 

,我得到的輸出是:

1000078201 172.29.219.105 kubelet None 
1000078202 172.29.219.104 kubelet None 
1000078204 172.29.219.103 kubelet None 
1000078209 172.29.219.106 mongod SECONDARY 
1000078209 172.29.219.106 elasticsearch Secondary 
1000078211 172.29.219.107 mongod SECONDARY 
1000078211 172.29.219.107 elasticsearch Secondary 
1000078206 172.29.219.109 postgres None 
1000078205 172.29.219.16 redis-server slave 
1000078837 172.29.219.15 redis-server master 

我想要的輸出在本質上更多的表格。

1000078201 172.29.219.105 kubelet   None 
1000078202 172.29.219.104 kubelet   None 
1000078204 172.29.219.103 kubelet   None 
1000078209 172.29.219.106 mongod   SECONDARY 
1000078209 172.29.219.106 elasticsearch Secondary 
1000078211 172.29.219.107 mongod   SECONDARY 
1000078211 172.29.219.107 elasticsearch Secondary 
1000078206 172.29.219.109 postgres  None 
1000078205 172.29.219.16 redis-server slave 
1000078837 172.29.219.15 redis-server master 

可以查看哪些庫以獲得所需的輸出?

+0

不需要任何庫,python的內置[打印功能](https://docs.python.org/2/library/string.html#format-specification-mini-language)將很容易做到這一點。 – davedwards

+0

如果你知道你的值的最大值,你可以使用format() –

回答

1

不需要任何外部庫,使用python內置的format()函數。只是使這種更改一行:

my_file.write('{0:10} {1:14} {2:13} {3}\n'.format(str(id), nodes, svc, str(i))) 

有關參數和其他可能的定製詳情請參見Format Specification Mini-Language