stat

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² os.stat ()

ΠœΠΎΠ΄ΡƒΠ»ΡŒ stat опрСдСляСт константы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² os.stat (), os.fstat () ΠΈ os.lstat () (Ссли ΠΎΠ½ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚). Для получСния ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°Ρ… stat (), fstat () ΠΈ lstat () ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для вашСй систСмы.

ИзмСнСно Π² вСрсии 3.4: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ stat поддСрТиваСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ C.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ stat опрСдСляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²:

  • stat.S_ISDIR (mode) - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли mode являСтся ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ

  • stat.S_ISCHR (mode)

  • stat.S_ISBLK (mode)

  • stat.S_ISREG (mode) - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли mode являСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ

  • Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ...

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ os.path.is* () для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»Π°; ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ здСсь Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ выполняСтС нСсколько тСстов ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° систСмный Π²Ρ‹Π·ΠΎΠ² stat () для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ тСста. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ„Π°ΠΉΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ обрабатываСтся os.path, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π±Π»ΠΎΡ‡Π½Ρ‹Ρ… ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… устройств.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

import os, sys
from stat import *

def walktree(top, callback):
    '''рСкурсивно спускаСтся ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² с ΠΊΠΎΡ€Π½Π΅ΠΌ Π²Π²Π΅Ρ€Ρ…Ρƒ,
    исполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°'''

    for f in os.listdir(top):
        pathname = os.path.join(top, f)
        mode = os.stat(pathname).st_mode
        if S_ISDIR(mode):
            # Π­Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² Π½Π΅Π³ΠΎ
            walktree(pathname, callback)
        elif S_ISREG(mode):
            # Π­Ρ‚ΠΎ Ρ„Π°ΠΉΠ», Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°
            callback(pathname)
        else:
            # НСизвСстный Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π°, ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ сообщСниС
            print('Skipping %s' % pathname)

def visitfile(file):
    print('visiting', file)

if __name__ == '__main__':
    walktree(sys.argv[1], visitfile)

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠ»ΡƒΠΆΠ΅Π±Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для прСобразования Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ„Π°ΠΉΠ»Π° Π² ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡƒΡŽ строку:

  • stat.filemode ()

ВсС пСрСчислСнныС Π½ΠΈΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ - это просто символичСскиС индСксы Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ ΠΈΠ· 10, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌ os.stat (), os.fstat () ΠΈΠ»ΠΈ os.lstat ().

  • stat.ST_MODE - Ρ€Π΅ΠΆΠΈΠΌ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ inode

  • Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ...

  • stat.ST_SIZE - Ρ€Π°Π·ΠΌΠ΅Ρ€ простого Ρ„Π°ΠΉΠ»Π° Π² Π±Π°ΠΉΡ‚Π°Ρ…; количСство Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

  • Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ...

Last updated

Was this helpful?