Главная страница
Навигация по странице:

  • Сөздіктермен жұмыс

  • Екілік файлдар

  • Shelve модулі

  • Деректерді жаңарту

  • Деректерді жою

  • OS модулі және файлдық жүйемен жұмыс

  • Файлдың атын өзгерту

  • ГЛАВА 2, 3, 4, 5. 2 тарау. Python Негіздері Бадарламаларды жазуа кіріспе


    Скачать 242.51 Kb.
    Название2 тарау. Python Негіздері Бадарламаларды жазуа кіріспе
    Дата07.02.2022
    Размер242.51 Kb.
    Формат файлаdocx
    Имя файлаГЛАВА 2, 3, 4, 5.docx
    ТипДокументы
    #354527
    страница8 из 10
    1   2   3   4   5   6   7   8   9   10

    CSV файлдары
    Ақпаратты ыңғайлы түрде сақтайтын кең таралған файл форматтарының бірі-csv пішімі. Csv файлындағы әр жол үтірмен бөлінген жеке бағандардан тұратын жеке жазбаны немесе жолды білдіреді. Сондықтан формат Comma Separated Values деп аталады. Бірақ csv пішімі мәтіндік файл пішімі болғанымен, Python онымен жұмыс істеуді жеңілдету үшін арнайы орнатылған csv модулін ұсынады.
    Мысал арқылы модульдің жұмысын қарастырыңыз:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    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="" мәні көрсетіледі - бос жол амалдық жүйеге қарамастан файлдан жолдарды дұрыс оқуға мүмкіндік береді.
    Жазу үшін csv функциясымен қайтарылатын writer нысанын алу керек.writer(file). Бұл функцияға ашық файл жіберіледі. Ал жазбаның өзі writer әдісін қолдану арқылы жасалады.writerows (пайдаланушылар) бұл әдіс жолдар жиынтығын қабылдайды. Біздің жағдайда бұл екі өлшемді тізім.
    Егер бір өлшемді тізім болып табылатын бір жазбаны қосу қажет болса, мысалы ["Sam", 31], онда бұл жағдайда writer әдісін шақыруға болады.writerow(user)
    Нәтижесінде, сценарийді орындағаннан кейін, сол қалтада users файлы болады.келесі мазмұны бар csv:

    1

    2

    3

    4

    Tom,28

    Alice,23

    Bob,34

    Sam,31


    Файлдан оқу үшін, керісінше, reader нысанын жасау керек:

    1

    2

    3

    4

    5

    6

    7

    8

    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])


    Reader нысанын алған кезде циклде оның барлық жолдарын сұрыптай аламыз:
    Tom - 28

    Alice - 23

    Bob - 34

    Sam - 31
    Сөздіктермен жұмыс

    Жоғарыдағы мысалда әр жазба немесе жол бөлек тізім болды, мысалы ["Sam", 31]. Сонымен қатар, csv модулінде сөздіктермен жұмыс істеу үшін арнайы қосымша мүмкіндіктер бар. Атап айтқанда, csv функциясы.DictWriter () файлға жазуға мүмкіндік беретін writer нысанын қайтарады. Ал csv функциясы.DictReader () reader нысанын Файлдан оқу үшін қайтарады. Мысалы:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    import csv

     

    FILENAME = "users.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"].
    Екілік файлдар
    Екілік файлдар мәтіндік файлдарға қарағанда ақпаратты байттар жиынтығы түрінде сақтайды. Олармен жұмыс істеу үшін Python - да кірістірілген Pickle модулі қажет. Бұл модуль екі әдісті ұсынады:


    • dump (obj, file): obj нысанын екілік файлға жазады

    • load (file): екілік файлдан объектіге деректерді оқиды

    Оқу немесе жазу үшін екілік файлды ашқан кезде жазу ("w") немесе оқу ("r") режиміне қосымша"b"режимін қолдану керек екенін ескеру қажет. Екі нысанды сақтау керек делік:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    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 функциясын қолдана отырып, екі нысан дәйекті түрде жазылады. Сондықтан, файлды жүктеу функциясы арқылы дәйекті түрде оқығанда, біз бұл нысандарды санауға болады. Бағдарламаны консольдік шығару:

    Имя: Tom Возраст: 28
    Сол сияқты, біз файлдан объектілер жиынтығын сақтай және алып тастай аламыз:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    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("Имя:", user[0], "\tВозраст:", user[1], "\tЖенат(замужем):", user[2])


    Dump функциясымен қандай нысанды жазғанымызға байланысты, файлды оқу кезінде сол нысанды load функциясы қайтарады.

    Консольді шығару:

    Имя: Tom Возраст: 28 Женат(замужем): True

    Имя: Alice Возраст: 23 Женат(замужем): False

    Имя: Bob Возраст: 34 Женат(замужем): False
    Shelve модулі
    Python - да екілік файлдармен жұмыс істеу үшін тағы бір модульді қолдануға болады-shelve. Ол нысандарды белгілі бір кілті бар файлға сақтайды. Содан кейін, осы кілт арқылы файлдан бұрын сақталған нысанды шығара алады. Shelve модулі арқылы деректермен жұмыс істеу процесі объектілерді сақтау және алу үшін кілттерді пайдаланатын сөздіктермен жұмыс істеуге ұқсайды.
    Файлды ашу үшін shelve модулі open() функциясын қолданады:

    1

    open(путь_к_файлу[, flag="c"[, protocol=None[, writeback=False]]])


    Flag параметрі мәндерді қабылдай алатын жерде:


    • c: файл оқу және жазу үшін ашылады (әдепкі). Егер файл болмаса, ол жасалады.

    • r: файл тек оқу үшін ашылады.

    • w: файл жазу үшін ашылады.

    • n: файл жазу үшін ашылады егер файл болмаса, ол жасалады. Егер ол бар болса, онда ол қайта жазылады


    Файл қосылымын жабу үшін close() әдісі шақырылады:

    1

    2

    3

    import shelve

    d = shelve.open(filename)

    d.close()


    Немесе файлды with операторының көмегімен аша аласыз. Біз бірнеше нысанды сақтаймыз және файлға санаймыз:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    import shelve

     

    FILENAME = "states2"

    with shelve.open(FILENAME) as states:

        states["London"] = "Great Britain"

        states["Paris"] = "France"

        states["Berlin"] = "Germany"

        states["Madrid"] = "Spain"

     

    with shelve.open(FILENAME) as states:

        print(states["London"])

        print(states["Madrid"])

    Кілт ретінде жол мәндері қолданылады.
    Деректерді оқу кезінде, егер сұралған кілт болмаса, онда ерекшелік жасалады. Бұл жағдайда, қабылдамас бұрын, in операторының көмегімен кілттің бар-жоғын тексере аламыз:

    1

    2

    3

    4

    with shelve.open(FILENAME) as states:

        key = "Brussels"

        if key in states:

            print(states[key])


    Сондай-ақ, get () әдісін қолдана аламыз. Бірінші әдіс параметрі-мән алынатын кілт, ал екіншісі-кілт табылмаса қайтарылатын әдепкі мән.

    1

    2

    3

    with shelve.open(FILENAME) as states:

        state = states.get("Brussels", "Undefined")

        print(state)


    For циклын қолдана отырып, файлдан барлық мәндерді сұрыптауға болады:

    1

    2

    3

    with shelve.open(FILENAME) as states:

        for key in states:

            print(key," - ", states[key])


    Keys () әдісі барлық кілттерді файлдан қайтарады, ал values () әдісі барлық мәндерді береді:

    1

    2

    3

    4

    5

    6

    7

    with shelve.open(FILENAME) as states:

     

        for city in states.keys():

            print(city, end=" ")        # London Paris Berlin Madrid

        print()

        for country in states.values():

            print(country, end=" ")     # Great Britain France Germany Spain


    Тағы бір items () әдісі түйіндер жиынтығын қайтарады. Әр түйіспеде кілт пен мән бар.

    1

    2

    3

    4

    with shelve.open(FILENAME) as states:

     

        for state in states.items():

            print(state)


    Консольді шығару:
    ("London", "Great Britain")

    ("Paris", "France")

    ("Berlin", "Germany")

    ("Madrid", "Spain")
    Деректерді жаңарту

    Деректерді өзгерту үшін кілтке жаңа мән беру жеткілікті, ал деректерді қосу үшін жаңа кілтті анықтау жеткілікті:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    import shelve

     

    FILENAME = "states2"

    with shelve.open(FILENAME) as states:

        states["London"] = "Great Britain"

        states["Paris"] = "France"

        states["Berlin"] = "Germany"

        states["Madrid"] = "Spain"

     

    with shelve.open(FILENAME) as states:

     

        states["London"] = "United Kingdom"

        states["Brussels"] = "Belgium"

        for key in states:

            print(key, " - ", states[key])


    Деректерді жою

    Бір уақытта алу арқылы жою үшін, егер кілт табылмаса, элемент кілті мен әдепкі мәні берілетін pop () функциясын пайдалануға болады:

    1

    2

    3

    4

    with shelve.open(FILENAME) as states:

     

        state = states.pop("London", "NotFound")

        print(state)


    Сондай-ақ, жою үшін del мәлімдемесін қолдануға болады:

    1

    2

    3

    with shelve.open(FILENAME) as states:

     

        del states["Madrid"]    # удаляем объект с ключом Madrid


    Барлық элементтерді жою үшін clear() әдісін қолдануға болады:

    1

    2

    3

    with shelve.open(FILENAME) as states:

     

        states.clear()


    OS модулі және файлдық жүйемен жұмыс
    Каталогтар мен файлдармен жұмыс істеудің бірқатар мүмкіндіктері кіріктірілген os модулін ұсынады. Ол көптеген функцияларды қарастырайық тек негізгілері:


    • mkdir (): жаңа қалта жасайды

    • rmdir (): қалтаны жояды

    • rename (): файлдың атын өзгертеді

    • remove (): файлды жояды

    Қалтаны жасау және жою

    Қалтаны жасау үшін mkdir () функциясы қолданылады, оған жасалатын қалтаға жол беріледі:

    1

    2

    3

    4

    5

    6

    7

    import os

     

    # путь относительно текущего скрипта

    os.mkdir("hello")

    # абсолютный путь

    os.mkdir("c://somedir")

    os.mkdir("c://somedir/hello")


    Қалтаны жою үшін rmdir () функциясы пайдаланылады, оған жойылатын қалтаға жол беріледі:

    1

    2

    3

    4

    5

    6

    import os

     

    # путь относительно текущего скрипта

    os.rmdir("hello")

    # абсолютный путь

    os.rmdir("c://somedir/hello")


    Файлдың атын өзгерту

    Атын өзгерту үшін rename(source, target) функциясы шақырылады, оның бірінші параметрі бастапқы файлға апаратын жол, екіншісі - жаңа Файл атауы. Жолдар ретінде абсолютті де, салыстырмалы да қолдануға болады. Мысалы, қалтада болсын C://SomeDir / somefile файлы орналасқан.txt.

    Файлдың атын "hello.txt" деп өзгертеміз:

    1

    2

    3

    import os

     

    os.rename("C://SomeDir/somefile.txt", "C://SomeDir/hello.txt")


    Файлды жою

    Жою үшін файл жолы жіберілетін remove () функциясы шақырылады:

    1

    2

    3

    import os

     

    os.remove("C://SomeDir/hello.txt")

    1   2   3   4   5   6   7   8   9   10


    написать администратору сайта