gpt4 book ai didi

python - 使用相对于目录/文件描述符的路径截断文件?

转载 作者:太空宇宙 更新时间:2023-11-03 21:40:49 24 4
gpt4 key购买 nike

os 模块的许多方法(请参阅 documentation )支持相对于文件描述符 (dir_fd) 的路径,例如 unlink方法:

os.unlink(path, *, dir_fd=None)

我在某些情况下一直依赖此功能,尽管 os 的所有文件相关方法并不支持它。 truncate 缺少它(直到并包括 Python 3.7),例如:

os.truncate(path, length)

如何解决这个问题?

到目前为止我最好的想法是显式打开文件:

fd = os.open(path, flags = os.O_WRONLY | os.O_TRUNC, ... , dir_fd=dir_fd)
os.ftruncate(fd, length)
os.close(fd)

我想知道是否有更好的方法。

最佳答案

truncate 没有 dir_fd 参数,因为没有所需的 truncateat 系统调用。请参阅discussion here .

正确且唯一可行的解​​决方案实际上是:

def truncate(path, length, dir_fd = None):
fd = os.open(path, flags = os.O_WRONLY, dir_fd = dir_fd)
os.ftruncate(fd, length)
os.close(fd)

与我最初的问题不同,打开文件时不得指定模式os.O_TRUNC。如果这样做,文件将通过打开它而被截断为零,这绝不是有意的。

关于python - 使用相对于目录/文件描述符的路径截断文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52871892/

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