Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将pickle文件转储到新行中?_Python_Pickle - Fatal编程技术网

Python 如何将pickle文件转储到新行中?

Python 如何将pickle文件转储到新行中?,python,pickle,Python,Pickle,这是我的密码: f = open("cities.txt", 'wb') pickle.dump(city_list, f) f.close() 我知道通常要将列表垂直打印成新行,可以在打印语句中执行此操作:print(*city_list,sep='\n')。我想知道,在创建pickle文件时,是否有办法做到这一点,以便在打开它时,您可以看到一个垂直列表,而无需执行任何其他操作。例如,当我打开文件时: fh = open("cities.txt", 'rb') x = pickle.load

这是我的密码:

f = open("cities.txt", 'wb')
pickle.dump(city_list, f)
f.close()
我知道通常要将列表垂直打印成新行,可以在打印语句中执行此操作:print(*city_list,sep='\n')。我想知道,在创建pickle文件时,是否有办法做到这一点,以便在打开它时,您可以看到一个垂直列表,而无需执行任何其他操作。例如,当我打开文件时:

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

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

加载pickle数据后,它已经转换为常规Python列表。那么,您要问的是:如何打印列表中的项目,每行一个项目

答案很简单,就是这样做:

for item in x:
    print(item)
相反,如果您希望输出文件更容易被人读取,那么应该使用Python的pickling模块提供的格式以外的格式对数据进行编码

使用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)
这将导致cities.txt包含以下内容:

加拿大蒙特利尔

贝尔莫潘,伯利兹

摩纳哥,摩纳哥


加载了pickle数据后,它已经被转换为常规Python列表。那么,您要问的是:如何打印列表中的项目,每行一个项目

答案很简单,就是这样做:

for item in x:
    print(item)
相反,如果您希望输出文件更容易被人读取,那么应该使用Python的pickling模块提供的格式以外的格式对数据进行编码

使用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)
这将导致cities.txt包含以下内容:

加拿大蒙特利尔

贝尔莫潘,伯利兹

摩纳哥,摩纳哥


请注意,有更多的方法可以实现这一点。有些更适合于大容量的数据。这是最简单、最“pythonic”的方法。感谢您的快速回复,但我更希望在打开文件时不必执行任何其他操作就能显示垂直列表。比如,我可能需要在转储文件时执行一些操作,以便在打开文件时使其垂直打印。不幸的是,pickle格式不是人类可读的。如果你努力眯着眼睛看,你可以从原始数据中辨认出单词和字符串,但是如果你想让数据可读,你必须使用一种通用格式,允许一些格式,比如JSON、YAML或XML,或者你必须设计自己的格式。你考虑过使用CSV吗?我想我会尝试使用JSON。非常感谢。JSON原样可能不会在数组元素之间输出新行。您将需要一个足够成熟的JSON编写器来完成“漂亮的打印”。请注意,您可以通过更多的方法来实现这一点。有些更适合于大容量的数据。这是最简单、最“pythonic”的方法。感谢您的快速回复,但我更希望在打开文件时不必执行任何其他操作就能显示垂直列表。比如,我可能需要在转储文件时执行一些操作,以便在打开文件时使其垂直打印。不幸的是,pickle格式不是人类可读的。如果你努力眯着眼睛看,你可以从原始数据中辨认出单词和字符串,但是如果你想让数据可读,你必须使用一种通用格式,允许一些格式,比如JSON、YAML或XML,或者你必须设计自己的格式。你考虑过使用CSV吗?我想我会尝试使用JSON。非常感谢。JSON原样可能不会在数组元素之间输出新行。您将需要一个足够复杂的JSON编写器来完成“漂亮的打印”。