在Windows上运行st_ino
时,有人能告诉我os.stat()
的价值是什么意思(Python 3.5.3)?
在早期的Python版本中,这包含虚拟值,但最近发生了变化,我无法找到它是如何计算/生成的。我怀疑它根据文件系统(NTFS,FAT,...)
而有所不同示例
import os
stat = os.stat(r'C:\temp\dummy.pdf')
for attr in dir(stat):
if attr.startswith('st_'):
print('{}: {}'.format(attr,
stat.__getattribute__(attr)))
结果
st_atime: 1495113452.7421005
st_atime_ns: 1495113452742100400
st_ctime: 1495113452.7421005
st_ctime_ns: 1495113452742100400
st_dev: 2387022088
st_file_attributes: 33
st_gid: 0
st_ino: 10414574138828642
st_mode: 33060
st_mtime: 1494487966.9528062
st_mtime_ns: 1494487966952806300
st_nlink: 1
st_size: 34538
st_uid: 0
背景
我使用shutil.copyfile()
函数遇到了SameFileError
。在查看代码之后(尽管它在shutil.py
的注释中所说的内容),shutil._samefile()
函数不比较Windows中的路径名。相反,它使用os.path.samefile()
来比较st_ino
和st_dev
值。
源文件和目标文件都驻留在同一设备(卷)上,这可以解释为什么st_dev
的值相同。但我仍然感到疑惑为什么st_ino
对两个文件都有相同的值。
备注:这两个文件都在使用webDAV挂载的Sharepoint卷上,因此它们的st_ino
值可能是0
(虚拟),这可以解释为什么它们是相同的。我仍然很好奇; - )
更新
我怀疑,驻留在Sharepoint卷(WebDAV)上的文件返回的st_ino
值为0
,st_dev
的值也是SameFileError
。这是(错误的)\\sharepoint@SSL\AUT.pdf os.stat_result(st_mode=33206, st_ino=0, st_dev=0, st_nlink=1, st_uid=0, st_gid=0, st_size=4717, st_atime=1495031011, st_mtime=1495031011, st_ctime=1495031570)
\\sharepoint@SSL\ING.pdf os.stat_result(st_mode=33206, st_ino=0, st_dev=0, st_nlink=1, st_uid=0, st_gid=0, st_size=4722, st_atime=1495031203, st_mtime=1495031203, st_ctime=1495031733)
\\sharepoint@SSL\WAG.pdf os.stat_result(st_mode=33206, st_ino=0, st_dev=0, st_nlink=1, st_uid=0, st_gid=0, st_size=4710, st_atime=1495031511, st_mtime=1495031511, st_ctime=1495031912)
的原因。示例输出:
rooms$: Observable<Room[]>;
constructor(private roomService: RoomService) {}
ngOnInit() {
this.rooms$ = this.roomService.getRooms()
}