Loading...
Python

Կարող եք ձեր կոդը փորձարկել այստեղ

Python

Գլուխ 9. Աշխատանք ֆայլերի հետ

Երկուական ֆայլեր

Երկուական ֆայլերը, ի տարբերություն տեքստային ֆայլերի, տեղեկատվությունը պահում են որպես բայթերի հավաքածու: Ընթերցանության կամ գրելու համար երկուական ֆայլ բացելիս պետք է նաև հաշվի առնել, որ գրելու («w») կամ կարդալու («r») ռեժիմից բացի պետք է օգտագործել «b» ռեժիմը։
Ընթերցանության ժամանակ մենք ֆայլ ենք ստանում որպես բայթերի հավաքածու, և հակառակը, գրելիս write()բայթերի հավաքածուն փոխանցվում է մեթոդին։ Օրինակ, եկեք պատճենենք ֆայլը.
FILENAME = "forest.png" NEWFILENAME = "forest_new.png" image_data = [] with open(FILENAME, "rb") as file: image_data = file.read() with open(NEWFILENAME, "wb") as file: file.write(image_data) print(f"File {FILENAME} copied to {NEWFILENAME}")
Կարդում է ֆայլ, որի ուղին պահվում է FILENAME փոփոխականում: Այս դեպքում դա «forest.png» պատկերի ֆայլն է։ Ընթերցված բայթերը տեղադրվում են image_data ցանկում: Այնուհետև մենք գրում ենք այս ցուցակը NEWFILENAME անունով ֆայլում: Այս կերպ մենք պատճենելու ենք մի ֆայլի բովանդակությունը մյուսին:
մոդուլ pickle
Python-ը տրամադրում է նաև հատուկ ներկառուցված մոդուլ՝ pickle-ը երկուական ֆայլերի հետ աշխատելու համար, ինչը հեշտացնում է երկուական ֆայլերի հետ աշխատանքը։ Այս մոդուլը տրամադրում է երկու մեթոդ.

dump(obj, file) : գրում է obj օբյեկտը երկուական ֆայլի ֆայլում

load(file) : կարդում է տվյալները երկուական ֆայլից օբյեկտի մեջ

Ենթադրենք, որ մենք պետք է պահենք երկու փոփոխականների արժեքները.
import pickle FILENAME = "user.dat" name = "Tom" age = 19 with open(FILENAME, "wb") as file: pickle.dump(name, file) pickle.dump(age, file) with open(FILENAME, "rb") as file: name = pickle.load(file) age = pickle.load(file) print("Имя:", name, "\tВозраст:", age)
Dump ֆունկցիան հաջորդաբար գրում է երկու օբյեկտ: Հետևաբար, ֆայլը կարդալիս մենք կարող ենք նաև հաջորդաբար կարդալ այս օբյեկտները՝ օգտագործելով load ֆունկցիան։ Ծրագրի վահանակի ելքը.
Name Tom Age 28
Նմանապես, մենք կարող ենք պահպանել և առբերել օբյեկտների հավաքածուներ ֆայլից.
import pickle FILENAME = "users.dat" users = [ ["Tom", 28, True], ["Alice", 23, False], ["Bob", 34, False] ] with open(FILENAME, "wb") as file: pickle.dump(users, file) with open(FILENAME, "rb") as file: users_from_file = pickle.load(file) for user in users_from_file: print("Name:", user[0], "\tAge:", user[1], "\tMarried:", user[2])
Կախված նրանից, թե ինչ օբյեկտ ենք գրել dump ֆունկցիայով, ֆայլը կարդալիս նույն օբյեկտը կվերադարձվի load ֆունկցիայի կողմից։

Վահանակի ելք.
Name Tom Age 28 Married True
Name Alice Age 23 Married False
Name Bob Age 34 Married՝ False

Մեկնաբանություն գրելու համար խնդրում ենք մուտք լինել