Loading...
Python

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

Python

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

CSV ֆայլեր

Ֆայլի սովորական ձևաչափերից մեկը, որը տեղեկատվություն է պահում հարմար ձևով, csv ձևաչափն է : csv ֆայլի յուրաքանչյուր տող ներկայացնում է առանձին գրառում կամ տող, որը բաղկացած է ստորակետերով բաժանված առանձին սյունակներից։ Սա է իրականում պատճառը, որ ձևաչափը կոչվում է ստորակետերով բաժանված արժեքներ: Բայց չնայած csv ձևաչափը տեքստային ֆայլի ձևաչափ է, Python-ը տրամադրում է հատուկ ներկառուցված csv մոդուլ՝ հեշտացնելու հետ աշխատելը:
Եկեք նայենք մոդուլի աշխատանքին՝ օգտագործելով օրինակ.
import csv FILENAME = "users.csv" users = [ ["Tom", 28], ["Alice", 23], ["Bob", 34] ] with open(FILENAME, "w", newline="") as file: writer = csv.writer(file) writer.writerows(users) with open(FILENAME, "a", newline="") as file: user = ["Sam", 31] writer = csv.writer(file) writer.writerow(user)
Ֆայլի վրա գրված է երկչափ ցուցակ՝ ըստ էության, աղյուսակ, որտեղ յուրաքանչյուր տող ներկայացնում է մեկ օգտվող: Եվ յուրաքանչյուր օգտվող պարունակում է երկու դաշտ՝ անուն և տարիք: Այսինքն, ըստ էության, երեք տողերի և երկու սյունակների աղյուսակ է:

Գրելու համար ֆայլ բացելիս արժեքը նշվում է որպես երրորդ պարամետր newline=""՝ դատարկ տողը թույլ է տալիս ճիշտ կարդալ տողերը ֆայլից՝ անկախ օպերացիոն համակարգից:

Գրելու համար մենք պետք է ստանանք writer օբյեկտը , որը վերադարձվում է ֆունկցիայի կողմից csv.writer(file): Բաց ֆայլ փոխանցվում է այս ֆունկցիային: Իսկ իրական ձայնագրությունը կատարվում է մեթոդի միջոցով: writer.writerows(users)Այս մեթոդը ընդունում է տողերի մի շարք: Մեր դեպքում սա երկչափ ցուցակ է։

Եթե Ձեզ անհրաժեշտ է ավելացնել մեկ մուտք, որը, օրինակ, միաչափ ցուցակ է, ["Sam", 31]ապա այս դեպքում կարող եք զանգահարել writer.writerow(user) մեթոդը:

Արդյունքում սկրիպտը կատարելուց հետո users.csv ֆայլը կհայտնվի նույն թղթապանակում, որը կունենա հետևյալ բովանդակությունը.
Tom,28
Alice,23
Bob,34
Sam,31
Ֆայլից կարդալու համար, ընդհակառակը, մենք պետք է ստեղծենք ընթերցող օբյեկտ.
import csv FILENAME = "users.csv" with open(FILENAME, "r", newline="") as file: reader = csv.reader(file) for row in reader: print(row[0], " - ", row[1])
Երբ մենք ստանում ենք ընթերցող օբյեկտ, մենք կարող ենք շրջել նրա բոլոր տողերով.
Tom - 28
Alice - 23
Bob - 34
Sam - 31
Աշխատեք բառարանների հետ
Վերևի օրինակում յուրաքանչյուր մուտք կամ տող առանձին ցուցակ էր, օրինակ՝ ["Sam", 31]. Բայց բացի այդ, csv մոդուլն ունի բառարանների հետ աշխատելու հատուկ լրացուցիչ հնարավորություններ։ Մասնավորապես, csv.DictWriter() ֆունկցիան վերադարձնում է գրող օբյեկտ, որը թույլ է տալիս գրել ֆայլ: Իսկ csv.DictReader() ֆունկցիան վերադարձնում է ընթերցող օբյեկտ՝ ֆայլից կարդալու համար: Օրինակ:
import csv FILENAME = "users2.csv" users = [ {"name": "Tom", "age": 28}, {"name": "Alice", "age": 23}, {"name": "Bob", "age": 34} ] with open(FILENAME, "w", newline="") as file: columns = ["name", "age"] writer = csv.DictWriter(file, fieldnames=columns) writer.writeheader() writer.writerows(users) user = {"name" : "Sam", "age": 41} writer.writerow(user) with open(FILENAME, "r", newline="") as file: reader = csv.DictReader(file) for row in reader: print(row["name"], "-", row["age"])
Տողերը գրվում են նաև writerow()և մեթոդների միջոցով writerows(): Բայց այժմ յուրաքանչյուր տող առանձին բառարան է, և բացի այդ, սյունակների վերնագրերը գրվում են writeheader() մեթոդով , և սյունակների մի շարք փոխանցվում է csv.DictWriter մեթոդին՝ որպես երկրորդ պարամետր։

Տողերը կարդալիս, օգտագործելով սյունակների անունները, մենք կարող ենք անդրադառնալ տողում գտնվող առանձին արժեքներին row["name"].

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