glob

Python-ում ֆայլերի հետ աշխատելիս երբեմն մեզ անհրաժեշտ է ֆայլեր բեռնել՝ հիմնվելով որոշակի մոդելի կամ օրինաչափության (pattern) վրա: glob մոդուլը տրամադրում է ֆունկցիաներ՝ ստեղծելու տվյալ օրինաչափություններին համապատասխան ֆայլերի ցուցակներ, ինչպիսիք են նիշերը և ռեկուրսիվ որոնման հնարավորությունը "**"-ով: Ահա թե ինչպես կարող ենք import անել մոդուլը և օգտագործել այն.
import glob

txt_files = glob.glob('*.txt')     # Fetches all .txt files in the current directory
print(txt_files, type(txt_files))  # Prints the list of .txt files and its type
Ենթադրենք` ընթացիկ գրացուցակում (directory) կան երեք տեքստային ֆայլեր՝ file1.txt, file2.txt և file3.txt։ Արդյունքը կլինի.
['file1.txt', 'file2.txt', 'file3.txt'] <class 'list'>
glob ֆունկցիան ընդունում է օրինաչափությունը որպես տող և վերադարձնում է ֆայլերի և գրացուցակների ցանկը, որոնք համապատասխանում են օրինաչափությանը:
Մեր նախորդ օրինակում մենք օգտագործել ենք * նիշը, որը համապատասխանում է զրո կամ ավելի սիմվոլների: Հետևաբար, *.txt-ը համընկնում է բոլոր ֆայլերի հետ, որոնք ավարտվում են .txt-ով:
Մենք կարող ենք նաև ռեկուրսիվ կերպով որոնել ֆայլերը ենթագրացուցակներում.
nested_files = glob.glob('**/*.txt', recursive=True)  # Fetches all .txt files recursively
print(nested_files, type(nested_files))               # Prints the list of .txt files and its type
Ենթադրենք՝ բացի մեր նախորդ ֆայլերից, ընթացիկ գրացուցակում մենք ունենք նաև folder1, որը պարունակում է file4.txt և file5.txt։ Այս դեպքում արդյունքը կլինի.
['file1.txt', 'file2.txt', 'file3.txt', 'folder1/file4.txt', 'folder1/file5.txt'] <class 'list'>
Մեր օրինաչափության մեջ օգտագործել ենք **: Այս նշանը ուղու անվան (pathname) օրինակում նշանակում է բոլոր ֆայլերը, ինչպես նաև զրո կամ ավելի գրացուցակներ և ենթագրացուցակներ: Մենք նաև օգտագործել ենք recursive=True արգումենտը, որպեսզի ֆունկցիան կարողանա մուտք ունենալ դեպի ենթագրացուցակներ: Հետևաբար, '**/*.txt', recursive=True-ն վերցնում է բոլոր .txt ֆայլերը ընթացիկ գրացուցակից և դրա ենթագրացուցակից:
Սա օգտակար միջոց է, երբ գործ ունենք ֆայլերի ուղիների (paths) հետ կամ պետք է ավտոմատացնենք ֆայլերի հետ աշխատանքը:

Առաջադրանք․ գտեք .py ֆայլերը

Դուք աշխատում եք տեխնոլոգիական ստարտափում՝ որպես տվյալների մասնագետ։ Ձեզ հանձնարարված է դասավորել Python-ի բոլոր ֆայլերը ընթացիկ պրոյեկտում: Վերջին շաբաթների ընթացքում շտապողականության պատճառով Python ֆայլերը (.py) ցրված են ընթացիկ գրացուցակով մեկ: Ձեր խնդիրն է ստեղծել Python ծրագիր, որն օգտագործում է glob՝ ընթացիկ ֆայլային պանակում առկա բոլոր Python ֆայլերը (.py) ցուցակագրելու համար: Հաշվի առեք, որ ձեզ հետաքրքրում են միայն ֆայլերի անունները (դրանց գտնվելու վայրն էական չէ), ուստի արդյունքը պետք է լինի միայն ֆայլերի անունները՝ առանց գրացուցակի ուղու (path):
Ծրագիրը որևէ մուտքագրման կարիք չունի:
Ծրագրի ելքը պետք է պարունակի ընթացիկ գրացուցակում Python ֆայլերի անունները՝ յուրաքանչյուրը գրված նոր տողում: Գրացուցակի ուղին ելքի մեջ մի՛ ներառեք:
Մուտք
Ելք
experiment.py file1.py file2.py main.py my_program.py
Նշում. Քանի որ խնդիրն ընթացիկ directory-ում ֆայլերի ցուցակագրումն է, արդյունքը կփոխվի՝ կախված կատարման պահին առկա ֆայլերից: Հետևաբար, այստեղ ելքի օրինակը զուտ պատկերավոր է և կարող է չհամընկնել իրական կատարման արդյունքի հետ:
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue