select name, party, years_served
from president
where years_served in (select max(years_served) from president group by party)
order by years_served desc
模块的许多方法(请参阅documentation)都支持相对于文件描述符(os
)的路径,例如dir_fd
方法:
unlink
在少数情况下,我一直依赖此功能,尽管os.unlink(path, *, dir_fd=None)
的所有与文件相关的方法均不支持此功能。 os
(直到并包括Python 3.7)缺少它,例如:
truncate
如何解决此问题?
到目前为止,我最好的主意是明确打开文件:
os.truncate(path, length)
我想知道是否有更好的方法。
答案 0 :(得分:0)
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
。如果这样做的话,只要打开它,文件就会被截断为零,这绝不是故意的。