Loading...
Python

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

Python

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

Տեքստային ֆայլեր

Տեքստային ֆայլում գրելը
Գրելու համար տեքստային ֆայլ բացելու համար դուք պետք է օգտագործեք w (վերագրանցում), a (լրացուցիչ) կամ r+ / w+ (կարդալ և գրել) ռեժիմը: Այնուհետև գրելու համար օգտագործվում է write(str) մեթոդը , որը փոխանցվում է գրվող տողը։ Հարկ է նշել, որ հենց տողը գրված է, հետևաբար, եթե անհրաժեշտ է գրել թվեր կամ այլ տեսակի տվյալներ, ապա դրանք նախ պետք է վերածել տողի։
Եկեք որոշ տեղեկություններ գրենք «hello.txt» ֆայլում.
with open("hello.txt", "w") as file: file.write("hello world") print("Ֆայլը գրված է")
Եթե մենք բացենք թղթապանակը, որտեղ գտնվում է ընթացիկ Python սկրիպտը, այնտեղ կտեսնենք «hello.txt» ֆայլը: Այս ֆայլը կարող է բացվել ցանկացած տեքստային խմբագրիչով և ցանկության դեպքում փոփոխվել:

Հիմա այս ֆայլին ավելացնենք ևս մեկ տող.
with open("hello.txt", "a") as file: file.write("\nhello work") print("Ֆայլը փոփոխված է")
Հավելումը նման է ֆայլի վերջին նիշին տող ավելացնելու, այնպես որ, եթե ձեզ անհրաժեշտ է գրել նոր տողից, կարող եք օգտագործել «\n» փախուստի հաջորդականությունը: Արդյունքում, hello.txt ֆայլը կունենա հետևյալ բովանդակությունը.
hello world
hello work
Տողերի ցուցակ գրելու համար կա writelines() մեթոդ : Որպես պարամետր այն վերցնում է տողերի ցանկը.
lines = ["Hello Word\n", "Hello Work\n", "Hello World\n"] with open("hello2.txt", "a") as file: file.writelines(lines) print("Ֆայլում գրված տողերի ցանկ")
Արժե հաշվի առնել, որ եթե ցանկանում ենք, որ ցանկից յուրաքանչյուր տող տեղադրվի ֆայլի առանձին տողում, ապա ցուցակի տողը պետք է ավարտվի «\n» գրանշանով։
Ֆայլի վրա գրելու մեկ այլ եղանակ է ստանդարտ print() մեթոդը , որն օգտագործվում է տվյալների կոնսոլին դուրս բերելու համար.
with open("hello.txt", "a") as myfile: print("\nhello metanit.com", file=myfile)
Տվյալները ֆայլ դուրս բերելու համար ֆայլի անունը փոխանցվում է տպման մեթոդին որպես երկրորդ պարամետր ֆայլի պարամետրի միջոցով: Իսկ առաջին պարամետրը ներկայացնում է ֆայլում գրվող տողը:
Ֆայլի ընթերցում
Ֆայլը կարդալու համար այն բացվում է r (Կարդալ) ռեժիմով, այնուհետև մենք կարող ենք կարդալ դրա բովանդակությունը՝ օգտագործելով տարբեր մեթոդներ.

readline() : կարդում է մեկ տող ֆայլից

read() : կարդում է ֆայլի ամբողջ բովանդակությունը մեկ տողի մեջ

readlines() : կարդում է ֆայլի բոլոր տողերը ցուցակի մեջ

Օրինակ, տող առ տող դիտարկեք վերը նշված գրանցված ֆայլը.
with open("hello.txt", "r") as file: for line in file: print(line)
Չնայած մենք հստակորեն չենք օգտագործում մեթոդ readline()յուրաքանչյուր տող կարդալու համար, երբ մենք կրկնում ենք ֆայլի միջոցով, այս մեթոդը ավտոմատ կերպով կանչվում է յուրաքանչյուր նոր տող ստանալու համար: Հետևաբար, իմաստ չունի ձեռքով զանգել ընթերցման գիծ մեթոդը օղակում:
Այնուամենայնիվ, քանի որ տպման ֆունկցիան անուղղակիորեն ավելացնում է նոր տող «\n» յուրաքանչյուր տողին, և գրված ֆայլի տողերը նույնպես առանձնացված են «\n» նոր տողով, յուրաքանչյուր տող ավարտվում է կրկնակի «\n»-ով։ և այլ տողում անհարկի փաթաթումից խուսափելու համար կարող եք արժեքը փոխանցել տպման ֆունկցիային end="":
with open("hello.txt", "r") as file: for line in file: print(line, end="")
Այժմ եկեք հստակորեն կոչենք readline() առանձին տողեր կարդալու մեթոդը.
with open("hello.txt", "r") as file: str1 = file.readline() print(str1, end="") str2 = file.readline() print(str2)
Readline մեթոդը կարող է օգտագործվել ֆայլը տող առ տող կարդալու համար որոշ ժամանակով հանգույցով.
with open("hello.txt", "r") as file: line = file.readline() while line: print(line, end="") line = file.readline()
Եթե ֆայլը փոքր է, ապա այն կարելի է միանգամից կարդալ՝ օգտագործելով read() մեթոդը.
with open("hello.txt", "r") as file: content = file.read() print(content)
Եվ նաև օգտագործեք readlines() մեթոդը ՝ ամբողջ ֆայլը տողերի ցանկում կարդալու համար.
with open("hello.txt", "r") as file: contents = file.readlines() str1 = contents[0] str2 = contents[1] print(str1, end="") print(str2)
Ֆայլը կարդալիս մենք կարող ենք հանդիպել այն փաստի, որ դրա կոդավորումը չի համապատասխանում ASCII-ին: Այս դեպքում մենք կարող ենք բացահայտորեն նշել կոդավորումը՝ օգտագործելով կոդավորման պարամետրը.
filename = "hello.txt" with open(filename, encoding="utf8") as file: text = file.read()
Կարդալ եւ գրել
Ֆայլը անմիջապես կարդալու և գրելու համար բացելու համար օգտագործվում են հետևյալ դրոշները.

r+ . եթե ֆայլը չի գտնվել, բացառություն է բացվում FileNotFoundError

w+ . Եթե ֆայլը գոյություն չունի, այն ինքնաբերաբար ստեղծվում է: Եթե ֆայլը գոյություն ունի, այն վերագրվում է

Օրինակ, եկեք գրենք և կարդանք տվյալներ ֆայլից.
with open("hello.txt", "w+") as file: file.write("Hello world\nHello work\n") file.seek(0) content = file.read() print(content)
Տեղափոխում ֆայլի միջով
Seek() մեթոդն օգտագործվում է ֆայլի բացումից հետո շարժվելու համար : Այն փոխանցվում է բայթի ինդեքսը, որտեղ պետք է տեղափոխվի ֆայլի ցուցիչը: Օրինակ, վերը նշված օրինակում գրելուց հետո ֆայլի ցուցիչը ավտոմատ կերպով դրվում է ֆայլի վերջում: Իսկ տվյալները կարդացվում են այն դիրքից, որտեղ գտնվում է ցուցիչը։ Իսկ այն հենց սկզբին տեղափոխելու համար օգտագործվում է զանգը
file.seek(0)
Նմանապես, մենք կարող ենք ֆայլի միջով տեղափոխել ցանկալի դիրք: Օրինակ՝ մենք հաշվում ենք տվյալները՝ սկսած 5-րդ նիշից.
with open("hello.txt", "w+") as file: file.write("Hello world\n") file.seek(6) content = file.read() print(content) # world
Ֆայլերի հետ աշխատելու օրինակ
Հիմա եկեք գրենք մի փոքրիկ սկրիպտ, որը կգրի օգտագործողի մուտքագրած տողերի զանգված և կկարդա այն ֆայլից դեպի վահանակ.
FILENAME = "messages.txt" def write(): message = input("Введите строку: ") with open(FILENAME, "a") as file: file.write(message + "\n") def read(): with open(FILENAME, "r") as file: for message in file: print(message, end="") print() while(True): selection = int(input("1.Write file\t\t2.Read file\t\t3.Exit\nChoose action: ")) match selection: case 1: write() case 2: read() case 3: break case _: print("Wrong enter") print("Program ended")

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