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) ուղիների հետ: Ենթադրենք՝ դուք աշխատում եք թվային արխիվների հետ գործ ունեցող ընկերությունում՝ որպես ծրագրավորող: Ձեր խնդիրն է ստեղծել ծրագիր, որը կարող է փոխարկել հարաբերական ուղիները բացարձակ ուղիների, որպեսզի հնարավոր լինի կառավարել փաստաթղթերը և ըստ անհրաժեշտության՝ մուտք ունենալ դրանց:
Տրված է հարաբերական ուղին։ Ձեր ծրագիրը պետք է տպի դրան համապատասխան բացարձակ ուղին:
Մուտքի միակ տողը պարունակում է մեկ հարաբերական ուղի:
Ձեր ծրագրի ելքը պետք է լինի մուտքագրված հարաբերական ուղուն համապատասխան բացարձակ ուղին: