Windows上的os.stat()

时间:2011-03-11 16:43:25

标签: python windows

os.stat()中的哪些字段在Windows上填充了虚拟值?

python doc对此并不清楚。特别是,st_ino在Windows上产生了什么?

有人可以在Windows上运行交互式python会话并让我知道吗?我没有Windows机器所以我不能这样做。

6 个答案:

答案 0 :(得分:2)

这是一个测试运行:

C:\WINDOWS>echo test > test.txt

C:\WINDOWS>python
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.stat('test.txt')
nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0, st_nlink=0, st_uid=0, st_gid=
0, st_size=7L, st_atime=1299861919L, st_mtime=1299861919L, st_ctime=1299861919L)

>>>

答案 1 :(得分:2)

在Python 3.3.4中

>>> os.stat('.')
nt.stat_result(st_mode=16895, st_ino=1407374883604316, st_dev=0, st_nlink=1, st_uid=0,
st_gid=0, st_size=4096, st_atime=1392476826, st_mtime=1392476826, st_ctime=1392374365)

与旧版本st_ino不同。

答案 2 :(得分:1)

Python 3.1.2说:

>>> os.stat("C:\\autoexec.bat")
nt.stat_result(st_mode=33279, st_ino=0, st_dev=0, st_nlink=0, st_uid=0, st_gid=0,
st_size=0, st_atime=1150614982, st_mtime=1150614982, st_ctime=1150614982)

答案 3 :(得分:1)

st_inost_devst_nlinkst_uidst_gid是Windows 7 SP1上的虚拟变量,通过 Python 2.7.11

import os; os.stat('Desktop\test.txt')
nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0L, st_nlink=0, st_uid=0, st_gid=0, st_size=293L, st_atime=1448376581L, st_mtime=1451782006L, st_ctime=1448376581L)

但是,从 Python 3.5.1 开始,它们似乎在Windows 7 SP1中充满了有意义的值:

import os; os.stat('Desktop\test.txt')
os.stat_result(st_mode=33206, st_ino=17732923532870243, st_dev=2289627604, st_nlink=2, st_uid=0, st_gid=0, st_size=293, st_atime=1448376581, st_mtime=1451782006, st_ctime=1448376581)

关于此主题的Python文档将引导理智的用户避免在Windows中使用os.stat,因为无法保证任何字段始终/永远准确。在实践中,看起来st_sizest_atimest_mtimest_ctime通常并不总是准确的。其他字段至少取决于Python版本,可能还取决于Windows版本,还可能取决于其他因素。

答案 4 :(得分:0)

Python 3:

>>> os.stat( r'C:\Users\poke\Desktop\test.txt' )
nt.stat_result(st_mode=33206, st_ino=0, st_dev=0, st_nlink=0, st_uid=0, st_gid=0, st_size=252, st_atime=1299861949, st_mtime=1298245084, st_ctime=1299861949)

你还需要什么?

答案 5 :(得分:-2)

我在python 3.4中运行os.stat

以下是我使用的代码

import os


myPath = os.path.expanduser("~")
os.chdir(myPath)

files = os.listdir()

for file in files:
    info = os.stat(file)
    print ("{0:>20} {1:>8}".format(file, info.st_size))