13

Normally, executing the following code will pickle an object to a file in my current directory:

fp = open('somefile.txt', 'wb')
pickle.dump(object, fp)

How do I re-direct the output from pickle.dump to a different directory?

4

3 回答 3

16
with open('/full/path/to/file', 'wb') as f:
    pickle.dump(object, f)
于 2013-07-19T15:56:19.197 回答
5

pathlib 和 with 的组合怎么样,我认为它更灵活,更安全。

# from python 3.4
from pathlib import Path
my_path = Path("{path to you want to set root like . or ~}") / "path" / "to" / "file"
with my_path.open('wb') as fp:
    pickle.dump(object, fp)
于 2021-01-15T22:49:29.710 回答
2

如果您希望将文件保存到位于包含您的代码的文件夹内的子文件夹中,您可以使用 pathlib 模块。这将允许代码工作,即使它的位置在您的计算机上移动,或者您的代码被添加到不同的机器。

导入模块:

from pathlib import Path

将 root 设置为等于您当前的文件夹:

root = Path(".")

创建子文件夹和文件名的路径:

my_path = root / "my_sub_folder" / "my_file_name"

打开您的文件,将数据转储到您的文件,关闭您的文件:

my_file = open(my_path, 'wb')
my_file = pickle.dump("data_to_save", my_file)
my_file.close()
  • 请注意,如果您的 my_file 当前不存在,您需要在运行此代码之前创建它。*
于 2019-05-07T06:05:07.867 回答