os.stat () в Windows - PullRequest
       2

os.stat () в Windows

5 голосов
/ 11 марта 2011

Какие поля в os.stat() заполнены фиктивными значениями в Windows?

Документ Python не совсем понятен.В частности, что дает st_ino в Windows?

Может кто-нибудь запустить интерактивный сеанс Python в Windows и сообщить мне?У меня нет машины с Windows, поэтому я не могу этого сделать.

Ответы [ 6 ]

2 голосов
/ 22 февраля 2014

В 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 голосов
/ 11 марта 2011

Вот тестовый прогон:

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 голос
/ 03 января 2016

st_ino, st_dev, st_nlink, st_uid и st_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)

Однако, по-видимому, они заполнены значимыми значениями в Windows 7 с пакетом обновления 1 (SP1) по состоянию на Python 3.5.1 :

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 по этой теме могут заставить здравомыслящего пользователя избегатькогда-либо использовать os.stat в Windows, так как нет никакой гарантии, что любое поле всегда будет / когда-либо быть точным.На практике это выглядит так: st_size, st_atime, st_mtime и st_ctime обычно, если не всегда, точны.Другие поля зависят как минимум от версии Python, возможно, также от версии Windows, и, возможно, других факторов.

1 голос
/ 11 марта 2011

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)
0 голосов
/ 09 ноября 2015

Я пробежал os.stat в питоне 3.4.

Вот код, который я использовал

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))
0 голосов
/ 11 марта 2011

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)

Что-нибудь еще нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...