python - 任何访问 pickle 的函数都会导致 FileNotFoundError

问题描述 投票:0回答:1

错误:

> Traceback (most recent call last):
> File ".\scripts\pickle_threed_future_dataset.py", line 127, in <module>
> main(sys.argv[1:])
> File ".\scripts\pickle_threed_future_dataset.py", line 101, in main
> scenes_dataset = ThreedFront.from_dataset_directory(
> File "c:\users\mibig\desktop\atiss\scene_synthesis\datasets\threed_front.py", line 169, in from_dataset_directory
> scenes = parse_threed_front_scenes(
> File "c:\users\mibig\desktop\atiss\scene_synthesis\datasets\utils.py", line 129, in parse_threed_front_scenes
> pickle.dump(scenes, open("/tmp/threed_front.pkl", "wb"))
> FileNotFoundError: [Errno 2] No such file or directory: '/tmp/threed_front.pkl'

导致错误的代码:

if os.getenv("PATH_TO_SCENES"):
        scenes = pickle.load(open(os.getenv("PATH_TO_SCENES"), "rb"))
    else:
    scenes = sum(scenes, [])
        pickle.dump(scenes, open("\tmp\threed_front.pkl", "wb"))

代码的 github 源自述文件显示脚本应该自动写入 tmp/threed_front.pkl 中的文件。它还提到我应该将创建的 .pkl 文件设置为我的 PATH_TO_SCENES。

我找不到 /tmp 目录或 threed_front.pkl 文件。我尝试在环境和根目录中创建一个 /tmp 文件夹,但它仍然显示相同的错误。

根据建议中的其他一些 stackoverflow 问题,其中一些人提到尝试对绝对路径进行编码而不是使用变量。我通过将 python 代码本身更改为我创建的 mp 文件夹来尝试它,以解决问题并尝试写入绝对路径,但出现了相同的错误。 getenv 和 pickle.dump 函数不是问题。

我是 conda/python 的新手,如果我没有提供足够的信息,抱歉。我也不太确定哪里出了问题。如果可能的话,我能得到一些关于如何解决这个问题的指示或指示吗? (比如什么可能是我的问题的原因)谢谢。

python path environment-variables conda pickle
1个回答
0
投票

所以 'mp hreed_front.pkl' 这是错误的路径,因为它试图打开位于 'C: mp hreed_front.pkl' 的文件,我认为你不需要。

路径开头的反斜杠表示它将从您的驱动器“C:\”开始

我想你想要的是'. mp hreed_front.pkl' 或 'tmp hreed_front.pkl'.

这将从您的终端路径打开文件。

pickle.dump(scenes, open(".\tmp\threed_front.pkl", "wb"))

它会做同样的事情:

pickle.dump(scenes, open("tmp\threed_front.pkl", "wb"))

elsely如果你想在例如。在文件夹

C:\python\projects\foo\
并且你想从另一个项目中获取文件,那么你只需键入
..\<project name>\<filename>
.

..\
将返回文件夹

..\..\
将返回 2 个文件夹

© www.soinside.com 2019 - 2024. All rights reserved.