pathlib

Python-ում ֆայլերի ուղիների հետ աշխատելիս pathlib մոդուլը հիանալի միջոց է՝ առարկայակողմնորոշված աշխատելու համար: Ֆայլերի ուղիների դեպքում pathlib-ն ավելի հարմար տարբերակ է, քան տողերի մանիպուլյացիայի կիրառումը (որը դժվարընթեռնելի է և ավելի խոցելի է սխալների տեսանկյունից)։

from pathlib import Path

p = Path('.')      # '.' represents the current directory
print(p, type(p))  # <class 'pathlib.PosixPath'> or <class 'pathlib.WindowsPath'> depending on your operating system

Դուք կարող եք միացնել ուղիները, օգտագործելով / օպերատորը: Օրինակ, example.txt ֆայլն ընթացիկ գրացուցակում (directory) ներկայացնելու համար կարող եք անել հետևյալը.

file_path = p / 'example.txt'  # constructs a new path
print(file_path)               # example.txt

/ օպերատորն աշխատում է՝ անկախ նրանից, թե հիմքում ինչ օպերացիոն համակարգ է, և օգտագործում է ուղու բաժանիչը: Ուշադրություն դարձրեք, որ / օպերատորն, իրականում, __truediv__() կախարդական մեթոդն է Path class-ում, որը Path օբյեկտների հետ աշխատանքը դարձնում է շատ ինտուիտիվ:

Path օբյեկտից բացարձակ ուղի ստանալու համար կարող եք օգտագործել absolute() մեթոդը.

abs_path = file_path.absolute()  # get the absolute path
print(abs_path)                  # prints the absolute path, like /home/user/example.txt on Unix or C:\\user\\example.txt on Windows

Path դասն ունի մի շարք օգտակար մեթոդներ՝ ընդհանուր գործողությունների համար.

  • Path.cwd() - վերադարձնում է ընթացիկ աշխատանքային գրացուցակը (directory) որպես նոր Path օբյեկտ

  • Path.home() - վերադարձնում է հիմնական գրացուցակը որպես նոր Path օբյեկտ

  • Path.exists() - ստուգում է՝ արդյոք ուղին գոյություն ունի

  • Path.is_file() - ստուգում է՝ արդյոք ուղին ֆայլ է

  • Path.is_dir() - ստուգում է՝ արդյոք ուղին գրացուցակ (directory) է

  • Path.mkdir() - տվյալ ուղիում ստեղծում է նոր գրացուցակ

  • Path.glob() - վերադարձնում է գեներատոր, որը տալիս է գրացուցակի բոլոր համապատասխան ֆայլերը

Տեսնենք, թե ինչպես են օգտագործվում այս մեթոդներից մի քանիսը.

print(Path.cwd())             # prints current working directory
print(Path.home())            # prints home directory

if not file_path.exists():    # check if a file exists
    print(f'The file {file_path} does not exist.')

if file_path.is_file():       # check if it is a file
    print(f'{file_path} is a file.')

new_dir = p / 'new_dir'
new_dir.mkdir(exist_ok=True)  # create a new directory, do nothing if it exists

for file in p.glob('*.txt'):  # iterate over all .txt files in the current directory
    print(file)

Հիշեք, որ անհրաժեշտ է p-ն փոխարինել ձեր Path օբյեկտով, իսկ 'example.txt'-ն՝ ձեր ֆայլի անունով: Python-ում pathlib մոդուլը հզոր գործիք է ֆայլերի և գրացուցակների մանիպուլյացիայի համար:

Առաջադրանք․ հարաբերականից դեպի բացարձակ

Թվային արխիվների ի հայտ գալը մեծապես հեշտացրել է հսկայական թվով փաստաթղթերի կառավարումը: Այնուամենայնիվ, այս փաստաթղթերի ուղիների կառավարումը երբեմն կարող է մի բարդություններ առաջացնել, հատկապես երբ գործ ունենք հարաբերական (relative) և բացարձակ (absolute) ուղիների հետ: Ենթադրենք՝ դուք աշխատում եք թվային արխիվների հետ գործ ունեցող ընկերությունում՝ որպես ծրագրավորող: Ձեր խնդիրն է ստեղծել ծրագիր, որը կարող է փոխարկել հարաբերական ուղիները բացարձակ ուղիների, որպեսզի հնարավոր լինի կառավարել փաստաթղթերը և ըստ անհրաժեշտության՝ մուտք ունենալ դրանց:

Տրված է հարաբերական ուղին։ Ձեր ծրագիրը պետք է տպի դրան համապատասխան բացարձակ ուղին:

Մուտքի միակ տողը պարունակում է մեկ հարաբերական ուղի:

Ձեր ծրագրի ելքը պետք է լինի մուտքագրված հարաբերական ուղուն համապատասխան բացարձակ ուղին:

Մուտք

Ելք

./documents/report.pdf

/tmp/documents/report.pdf

folder2/file2.txt

/tmp/folder2/file2.txt

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