glob

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ шаблона ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ Π² стилС Unix

ΠœΠΎΠ΄ΡƒΠ»ΡŒ glob Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС ΠΏΡƒΡ‚ΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, Π² соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ Unix, хотя Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ порядкС. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠ»ΡŒΠ΄Ρ‹ ~ Π½Π΅ выполняСтся, Π½ΠΎ *, ? , ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ символов, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ [], Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сопоставлСны. Π­Ρ‚ΠΎ достигаСтся Π·Π° счСт совмСстного использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ os.scandir () ΠΈ fnmatch.fnmatch (), Π° Π½Π΅ ΠΏΡƒΡ‚Π΅ΠΌ фактичСского Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ fnmatch.fnmatch (), glob рассматриваСт ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Ρ‚ΠΎΡ‡ΠΊΠΈ (.), ΠΊΠ°ΠΊ особыС случаи. (Для раскрытия ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠ»ΡŒΠ΄Ρ‹ ΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ os.path.expanduser () ΠΈ os.path.expandvars ().)

Для Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ соотвСтствия Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚Π°-символы Π² скобки. НапримСр, '[?]' БоотвСтствуСт символу '?'.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ прСдоставляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • glob () - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список ΠΈΠΌΠ΅Π½ ΠΏΡƒΡ‚Π΅ΠΉ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠΉ спСцификации

  • iglob ()

  • escape ()

НапримСр, рассмотрим ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, содСрТащий ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹: 1.gif, 2.txt, card.gif ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ sub, содСрТащий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ» 3.txt. glob () даст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ всС Π²Π΅Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΡƒΡ‚ΠΈ.

>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
>>> glob.glob('**/*.txt', recursive=True)
['2.txt', 'sub/3.txt']
>>> glob.glob('./**/', recursive=True)
['./', './sub/']

Если Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с . ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. НапримСр, рассмотрим ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, содСрТащий card.gif ΠΈ .card.gif:

>>> import glob
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ fnmatch - Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° (Π½Π΅ ΠΏΡƒΡ‚ΠΈ) Π² стилС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ

Last updated

Was this helpful?