Windows操作系统

时间:2017-05-24 12:15:41

标签: windows python-3.x

在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_inost_dev值。

源文件和目标文件都驻留在同一设备(卷)上,这可以解释为什么st_dev的值相同。但我仍然感到疑惑为什么st_ino对两个文件都有相同的值。

备注:这两个文件都在使用webDAV挂载的Sharepoint卷上,因此它们的st_ino值可能是0(虚拟),这可以解释为什么它们是相同的。我仍然很好奇; - )

更新

我怀疑,驻留在Sharepoint卷(WebDAV)上的文件返回的st_ino值为0st_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()
}

0 个答案:

没有答案