gpt4 book ai didi

python - 文件对象的绝对路径

转载 作者:太空狗 更新时间:2023-10-29 17:18:03 26 4
gpt4 key购买 nike

这之前已经在 StackOverflow 上讨论过 - 我正在尝试找到一种找到文件对象绝对路径的好方法,但我需要它对 os.chdir() 具有鲁棒性,所以不能使用

f = file('test')
os.path.abspath(f.name)

相反,我想知道以下是否是一个好的解决方案 - 基本上扩展文件类以便在打开时保存文件的绝对路径:

class File(file):

def __init__(self, filename, *args, **kwargs):
self.abspath = os.path.abspath(filename)
file.__init__(self, filename, *args, **kwargs)

然后就可以了

f = File('test','rb')
os.chdir('some_directory')
f.abspath # absolute path can be accessed like this

这样做有什么风险吗?

最佳答案

一个重大风险是,一旦文件打开,进程将通过文件描述符而不是路径处理该文件。在许多操作系统上,文件的路径可以被其他进程更改(例如,通过不相关进程中的 mv 操作)并且文件描述符仍然有效并引用到同一个文件。

我经常利用这一点,例如,开始下载一个大文件,然后意识到目标文件不在我想要的位置,然后跳到一个单独的 shell 并将其移动到正确的位置– 下载继续不间断。

因此,当操作系统没有提供此类保证时,依赖于在进程的生命周期内保持相同的路径是一个坏主意。

关于python - 文件对象的绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2458676/

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