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