Python - 如何将Windows路径写入JSON文件?

5

我正在与一位同事合作,他使用Ubuntu而我使用Windows。我们有一个包含JSON文件的数据集,其中包含一个名为“path”的字段。他的路径看起来像这样:

'C:/Users/krock/Desktop/FIIT/BP/Ubuntu/luadb/etc/luarocks_test/modules/30log/share/lua/5.3/30log.lua'

但是这在Windows上不起作用,我正在尝试做的是

some_string.replace('/', '\\')

但这会导致 JSON 中的字符串看起来像这样:

'C:\\Users\\krock\\Desktop\\FIIT\\BP\\Ubuntu\\luadb\\etc\\luarocks_test\\data_all'

在我的Windows机器上,我无法读取这些路径(的程序),因为它会出现以下错误:
"No such file or directory"
有解决方案吗?
编辑:我尝试使用pathlib中的Path,但我得到了另一个错误:
"TypeError: Object of type WindowsPath is not JSON serializable"
我发现解决方法是使用 str(Path(path_string)),但结果再次是用双引号括起来的路径。

1
你看过这个回答了吗?'/'是有效的分隔符。 - xinkecf35
1
还有,只是作为一个橡皮鸭子,你确定路径实际上存在吗?你能在资源管理器中导航到该路径吗?另外,为什么要尝试在JSON中存储(绝对)路径? - xinkecf35
1
这现在确实可以工作了,但我几乎确定以前不行。'/' 现在可以工作了。 - Michael Kročka
2个回答

0

尝试使用Path()后更新的帖子。 - Michael Kročka
我认为统一这两种系统并保存路径信息到json的最佳方法是将您的路径名保存为posix路径。Python的pathlib足够智能,可以处理各种情况,因此在Windows上,您可以很好地加载posix样式路径。 pathli b模块就是为此而创建的。 - Andrew Holmgren

0

这个问题缺少代码示例,因此无法更具体地说明,但一般来说,手动操作容易出错。考虑使用库,例如pathlib。例如:

>>> from pathlib import Path
>>> Path('luarocks_test/modules/30log/share/lua/5.3/30log.lua')
PosixPath('luarocks_test/modules/30log/share/lua/5.3/30log.lua')

在Windows上,实例化一个路径会给你一个WindowsPath。你还需要使用相对引用而不是绝对引用,因为路径在你的工作站上可能会有所不同。

尝试使用Path()后更新的帖子。 - Michael Kročka
这就是为什么您应该提供演示问题的代码。请提供一个代码示例,我们将能够更好地帮助您。@xinkecf35上面提供的答案可能会有所帮助。 - Alex Forbes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接