如何将泡菜文件转储到新行中?

时间:2019-04-14 16:26:46

标签: python pickle

这是我的代码:

f = open("cities.txt", 'wb')
pickle.dump(city_list, f)
f.close()

我通常知道将列表垂直打印到新行中,您可以在以下打印语句中执行此操作:print(* city_list,sep ='\ n')。我想知道在创建泡菜文件时是否有办法做到这一点,因此当您打开它时,您会看到一个垂直列表,而无需执行其他任何操作。例如,当我打开文件时:

fh = open("cities.txt", 'rb')
x = pickle.load(fh)
print(x)

我希望输出为垂直列表,而不必在print语句中添加sep ='\ n'。

1 个答案:

答案 0 :(得分:0)

一旦加载了腌制的数据,它已经被转换为常规的Python列表。那么,您要问的是:如何打印列表项,每行一项?

答案很简单:

for item in x:
    print(item)

如果相反,您希望输出文件更容易被人类阅读,则应使用Python的酸洗模块提供的格式以外的格式对数据进行编码。

使用CSV:

import csv

city_list = [
    ('Montreal', 'Canada'),
    ('Belmopan', 'Belize'),
    ('Monaco', 'Monaco'),
]

with open('cities.txt', 'w') as file:
    writer = csv.writer(file)

    for city, country in city_list:
        writer.writerow(city, country)

这将导致city.txt包含以下内容:

  

加拿大蒙特利尔

     

Belmopan,伯利兹

     

摩纳哥,摩纳哥