Python3 5.Работа с файлами,Split(),Цикл for,Список списков

Тема в разделе "Python", создана пользователем gx6060, 9 окт 2016.

Метки:
  1. gx6060

    gx6060 Python

    Регистрация:
    21 сен 2016
    Сообщения:
    37
    Симпатии:
    32
    1.Работа с файлами

    Что бы открыть файл в питоне есть функция open() , которая принимает 2 аргумента , имя файла записанное в виде строки и режим в котором будем работать с файлом :
    "r" = режим чтения (значение по умолчанию)
    "w" = режим записи(содержимое удаляется) если файла не существует создает новый
    "x" = открытие на запись, если файла не существует иначе исключение
    "a" = режим дозаписи , изменения сохраняются в конце файла
    "b" = чтение в двоичном коде
    "t" = текстовый режим (значение по умолчанию)
    "+" = запись и чтение
    Возможно комбинирование режимов ("rb") чтение в двоичном коде
    Код (Python):
    >>> open("sample.txt", "r") # файл находится в папке с питоном
    >>> open("C:\py\sample.txt", "r") # указывается путь к файлу
    При выполнении данного примера интерпретатор выведет информацию о файле:
    Код (Python):
    <_io.TextIOWrapper name='sample.txt' mode='r' encoding='cp1251'>
    # Имя файла , режим работы с ним и кодировка
    Функция open() возвращает объект файла , возможно назначить объект переменной что бы обратиться к нему позже
    Переменная не будет содержать информацию которая находится в файле , а позволяет использовать методы для чтения и изменения содержимого
    Код (Python):
    >>> file = open(sample.txt", "r")
    Для считывания содержимого файла используется метод read(), метод возвращает строковое представление содержимого файла , которое возможно присвоить переменной
    Метод вызывается с помощью (.)
    Код (Python):
    >>> file = open("sample.txt", "r")
    >>> f = file.read()
    Теперь можно использовать функцию print() для вывода значения присвоенного переменной f
    Код (Python):
    >>> file = open("sample.txt", "r")
    >>> f = file.read()
    >>> print(f)
    one,two,three,four,five
    2.Split()

    Что бы преобразовать строковый объект в список используется метод split() с аргументом разделителя, если вы имеете строку\файл с большим кол-вом (допустим имен написанных через пробел или запятую) использовать метод split() быстрее чем метод append() для создания списка
    Берем данные из прошлого примера (one,two,three,four,five) содержимое файла sample.txt
    Код (Python):
    >>> file = open("sample.txt", "r")
    >>> f = file.read()
    >>> list = f.split(",")
    # содержимое файла которое было считано методом read()
    # разделяем методом split() c запятой в виде разделителя (,)
    >>> print(list)
    ['one', 'two', 'three', 'four', 'five']
    Теперь возможно обращение по индексу ,длинна , срез списка , добавление и удаление элементов
    Код (Python):
    >>> list[0]
    'one'
    Код (Python):
    >>> len(list)
    5
    Код (Python):
    >>> list[0:3]
    # напоминалка вывод с 0 по 2  элементов , (3) считается исключением
    ['one', 'two', 'three']
    Код (Python):
    >>> list.remove("one")
    >>> print(list)
    ['two', 'three', 'four', 'five']
    3.Цикл for

    Предположим что работаете вы в бухгалтерии , и вот уже пришло время начислять рабочим зарплату , но ваш файл с фамилиями и кол-вом денег которые нужно начислить людям благодаря стараниям некоторой олдскульной бухгалтерши был пофачен и теперь состоит из кучи белеберды:) все фамилии написаны в ряд с пробелом по примеру (vasya:9000 masha:3700) и так далее.

    И теперь что бы разобраться в нем нужно либо переписывать его вручную или же воспользоваться циклом for для удобного вывода
    Код (Python):
    >>> f = open("zarplata.txt", "r")
    # открываем файл функцией open() с режимом чтения
    >>> g = f.read()
    # содержимое файла считывается методом read() и присваивается переменной g
    >>> zp_list = g.split(" ")
    # значение переменной g делится  методом split() с разделителем (" ")
    # и присваивается переменной zp_list
    >>> print(zp_list) # смотрим получившийся список
    ['vasya:9000', 'fedya:9000', 'masha:8200', 'petya:7700', 'sasha:5950', 'inna:4700']
    >>> for name in zp_list: # в конце основного блока цикла всегда ставится двоеточие ":"
    >>>     print(name) # вложенный блок
    # как работает цикл for читайте чуть ниже
    vasya:9000
    fedya:9000
    masha:8200
    petya:7700
    sasha:5950
    inna:4700
    Как работает цикл for :

    Переменная итератора name является временной переменной которая доступна только в цикле for
    Переменной name присваивается индекс [0] в списке zp_list и выводит текущее значение переменной name функцией print()
    Переменной name присваивается индекс [1] в списке zp_list и выводит текущее значение переменной name функцией print()
    И так далее до последнего элемента списка, как только элементы в списке заканчиваются , цикл for перестает работать

    4.Список списков

    Это список в котором каждый элемент является списком(сам не верю что написал эту тавтологию, бред какой то)используя цикл for для разделения элементов списка методом split() и добавления в конечный список методом append()
    Код (Python):
    >>> zp_list = ['vasya:9000', 'fedya:9000', 'masha:8200', 'petya:7700', 'sasha:5950', 'inna:4700']
    # список элементов
    >>> fin_list = [] # пустой список
    >>> for name in zp_list:
    >>>    sp_list  = name.split(",")
    # деление списка , разделителем (",")
    >>>    fin_list.append(sp_list) # добавление элементов методом append() в конечный список
    >>> print(fin_list) # функция за пределами цикла для вывода конечного результата
    [['vasya:9000'], ['fedya:9000'], ['masha:8200'], ['petya:7700'], ['sasha:5950'], ['inna:4700']]
    Как работает цикл for в данном примере:

    Временная переменная name принимает индекс [0] из списка zp_list , деление переменной name методом split() с разделителем (",") , присвоение полученного значения переменной sp_list .
    Добавление в конечный список fin_list методом append() переменной sp_list.
    И так далее до последнего элемента , после завершения цикла for
    функция print() находится за пределами цикла и выводит конечный список fin_list
     
    #1 gx6060, 9 окт 2016
    Последнее редактирование: 9 окт 2016
    Vander и WebWare Team нравится это.
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Имя переменной не хорошее. Не понятно это 1 или l или I.Внешний вид вообще от редактора зависит. В редакторе кода на форуме больше похоже на заглавную i, а в форматированном коде на форуме - на единицу.
    Это плохо и в реальном проекте (потому что ужасно), и в уроках (и читать тяжело и пример для начинающих программистов не хороший).

    В остальном урок нормальный. Жду новых.
     
  3. gx6060

    gx6060 Python

    Регистрация:
    21 сен 2016
    Сообщения:
    37
    Симпатии:
    32
    переделаем) спасибо за совет
     
    #3 gx6060, 9 окт 2016
    Последнее редактирование: 9 окт 2016
Загрузка...
Похожие Темы - Python3 Работа файлами
  1. gx6060
    Ответов:
    0
    Просмотров:
    266
  2. gx6060
    Ответов:
    6
    Просмотров:
    453
  3. gx6060
    Ответов:
    0
    Просмотров:
    181
  4. gx6060
    Ответов:
    0
    Просмотров:
    263
  5. gx6060
    Ответов:
    2
    Просмотров:
    316

Поделиться этой страницей