gpt4 book ai didi

python - 在带有 python 的 windows 中使用绝对 unix 路径

转载 作者:IT老高 更新时间:2023-10-28 22:22:04 25 4
gpt4 key购买 nike

我正在创建一个将 blob 文件存储到硬盘驱动器中的应用程序,但是这个脚本必须在 linux 和 windows 中运行,问题是我想给它一个从文件系统根目录开始的绝对路径,而不是相对于项目文件,这是因为我使用 git 并且不想处理从同步中排除所有这些文件。

所以我想要这样的东西:

path = '/var/lib/blob_files/'
file = open(path+'myfile.blob', 'w')

并在 unix 中获取文件:

/var/lib/blob_files/myfile.blob

在窗口中:

C:\var\lib\blob_files\myfile.blob

它也可能与用户主文件夹相关(unix 中的/home/user 和 windows 中的 C:/Users/User),但我想问题非常相似。

我怎样才能做到这一点?是否有任何库或函数可以帮助我透明地转换此路径,而无需询问脚本一直在哪个平台上运行?

在我的两个选项中,从根目录绝对或从主文件夹相对,你推荐使用哪一个?

提前感谢您对此的任何建议

最佳答案

使用 os.path.abspath(),以及 os.path.expanduser() 用于相对于用户主目录的文件:

print os.path.abspath("/var/lib/blob_files/myfile.blob")
>>> C:\var\lib\blob_files\myfile.blob

print os.path.abspath(os.path.expanduser("~/blob_files/myfile.blob"))
>>> C:\Users\jerry\blob_files\myfile.blob

这些将为 Windows 和 POSIX 路径“做正确的事情”。

expanduser() 如果路径中没有 ~ 则不会更改路径,因此您可以安全地将其用于所有路径。因此,您可以轻松编写包装函数:

import os
def fixpath(path):
return os.path.abspath(os.path.expanduser(path))

请注意,使用的驱动器号将是 Python 进程的当前工作目录指定的驱动器,通常是您的脚本所在的目录(如果从 Windows 资源管理器启动,并假设您的脚本没有更改它)。如果你想强制它总是 C: 你可以这样做:

import os
def fixpath(path):
path = os.path.normpath(os.path.expanduser(path))
if path.startswith("\\"): return "C:" + path
return path

关于python - 在带有 python 的 windows 中使用绝对 unix 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13162372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com