簡體   English   中英

如何根據python中的位置將數據寫入文件

[英]How to write data into a file based on the position in python

我在根據我的配置中定義的位置從字典列表中提取數據時遇到了一些麻煩。 場景:我從 vertica 表中獲取一個 dict 列表(通過一些方法調用),我需要在文件中寫入這些數據(鍵作為標題,值作為數據內容),以便我可以將該文件上傳到 sftp出於其他目的。

例子

# data received in a list of dict
new_list = [{'Table':'A', 'Column':'C1', 'DataType':'int'},
            {'Table':'A', 'Column':'C2', 'DataType':'varchar'},
            {'Table': 'B', 'Column': 'C3', 'DataType': 'int'}
           ]

我的配置定義為“表格”數據將從 0 開始到 10,“列”將從 11 到 25 開始,然后“數據類型”將從文件中的 25 到 35 開始。 此外,如果沒有足夠的數據來填充定義的范圍,則需要在數據后填充空格,直到達到指定的字段長度。 所以我希望輸出如下。 這里的列表本質上是動態的。 我知道我必須使用seek() ,但有點困惑。

Table          Column                    DataType
A              C1                        int
A              C2                        varchar
B              C3                        int

有什么建議?

我認為這就是你想要的,使用字符串格式

>>> def f(lst):
        print('{:<10s}{:<15s}{:<10s}'.format(*['Column','Table','DataType']))
        for row in new_list:
            s = '{d[Column]:<10s}{d[Table]:<15s}{d[DataType]:<10s}'.format(d=row)
            print(s)


>>> f(new_list)
Column    Table          DataType  
C1        A              int       
C2        A              varchar   
C3        B              int 

我部分猜測,但也許這就是你想要的:

new_list = [{'Table':'A', 'Column':'C1', 'DataType':'int'},
            {'Table':'A', 'Column':'C2', 'DataType':'varchar'},
            {'Table': 'B', 'Column': 'C3', 'DataType': 'int'}
           ]
# print in terminal
print "\t".join(new_list[0].keys())
for d in new_list:
    print "{}\t{}\t{}".format(d["Table"], d["Column"],d["DataType"])

# write to file
with open("outfile", "w") as f:
    f.write("\t".join(new_list[0].keys()) + "\n")
    for d in new_list:
        f.write("{}\t{}\t{}\n".format(d["Table"], d["Column"],d["DataType"]))

結果:

$ cat outfile 
Column  Table   DataType
A       C1      int
A       C2      varchar
B       C3      int

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM