python - Pickle vs 输出到 python 中的文件

标签 python file-io pickle

我有一个程序可以输出一些列表,我想存储这些列表以供日后使用。例如,假设它输出一个学生姓名列表和另一个他们的期中成绩列表。我可以通过以下两种方式存储此输出:

标准文件输出方式:

newFile = open('trialWrite1.py','w')
newFile.write(str(firstNames))
newFile.write(str(midterm1Scores))
newFile.close()

pickle 方式:

newFile = open('trialWrite2.txt','w')
cPickle.dump(firstNames, newFile)
cPickle.dump(midterm1Scores, newFile)
newFile.close()

哪种技术更好或更受欢迎?使用一个比另一个有优势吗?

谢谢

最佳答案

我认为 csv module 可能很适合这里,因为 CSV 是一种标准格式,可以由 Python(和许多其他语言)读取和写入,而且它也是人类可读的。用法可以像

一样简单
with open('trialWrite1.py','wb') as fileobj:
    newFile = csv.writer(fileobj)
    newFile.writerow(firstNames)
    newFile.writerow(midterm1Scores)

但是,每行写一个学生可能更有意义,包括他们的姓名和分数。可以这样做:

from itertools import izip
with open('trialWrite1.py','wb') as fileobj:
    newFile = csv.writer(fileobj)
    for row in izip(firstNames, midterm1Scores):
        newFile.writerow(row)

关于python - Pickle vs 输出到 python 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3588023/

相关文章:

python:为什么 list.append ('a' ) 效果列表?

python - 删除或编辑用 Python pickle 保存的条目

python - cPickle - pickle 同一对象的不同结果

python - 在Python中读取和写入邮政编码列表

python - "func azure functionapp publish"返回错误代码 400

java - JTable - 删除行问题

c - 为什么我在文件开头有一个连字符?

android - 从文件中检索 JSONObject

python - 我怎样才能 pickle 泡沫结果?

python - .count 和 .sum 之间的 pandas dataframe 令人困惑的区别