[英]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.