книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Скачать 2.24 Mb.
|
7.4. запись в файлКогда файл открывается в режиме записи, происходит создание нового файла. В случае если файл с таким именем уже существует, он будет предварительно удален, а все данные, содержащиеся в нем, будут потеряны. Если открыть существующий файл в режиме добавления, любые данные, которые будут записываться в него, будут добавляться в конец файла. При отсутствии на диске файла попытка его открытия в режиме добавления приведет к созданию нового файла с таким именем. Для пополнения информацией файла, предварительно открытого на запись или добавление, можно использовать метод write. Этот метод принимает в качестве входного параметра строку, которая будет записана в открытый файл. Данные других типов могут быть преобразованы в строковый тип при помощи функции str. Несколько значений могут быть записаны в файл путем их предварительного склеивания в одну длинную строку или посредством многократного вызова метода write. В отличие от функции print, метод write автоматически не вставляет символ перевода строки при записи в файл. Таким образом, разработчику необходимо самому позаботиться о том, чтобы значения, которые должны находиться в файле на разных строках, были явно разделены символами конца строки. В языке Python используется сочетание символов \n для обозначения маркера конца строки. Эти символы, входящие в список escapeпоследовательностей (escape sequence), могут присутствовать в строке сами по себе или как ее составная часть. В следующем фрагменте кода мы запишем числа от единицы до введенного пользователем значения в файл. Операция конкатенации и escape-последовательность \n используются так, чтобы числа располагались строго на своих строках. # Запрашиваем имя файла у пользователя и открываем его на запись fname = input("В каком файле сохранить последовательность чисел? ") outf = open(fname, "w") # Запрашиваем максимальное значение limit = int(input("Введите максимальное число: ")) # Пишем числа в файл – каждое в своей строке for num in range(1, limit + 1): outf.write(str(num) + "\n") # Закрываем файл outf.close() 7.5. аргументы командной строкиОбычно компьютерные программы запускаются путем двойного щелчка по соответствующему ярлыку. Но программы также могут быть запущены из командной строки путем ввода соответствующей команды в окно терминала или окно управления командной строкой. Например, во многих операционных системах программу на Python, сохраненную в файле test. py, можно запустить, написав test.py или python test.py в соответствующем окне. Запуск программы из командной строки открывает дополнительные возможности для передачи ей параметров. Значения, необходимые программе для выполнения своей задачи, могут быть переданы непосредственно в запускающей строке после расширения файла .py. Такая возможность бывает очень полезна при написании скриптов, запускающих другие программы с целью автоматизации каких-либо процессов, а также при создании программ, которые должны запускаться по определенному расписанию. Все аргументы командной строки, передаваемые в программу, сохраняются во внутренней переменной argv, располагающейся в модуле sys. По своей сути эта переменная является списком, и каждый входной параметр размещается в нем в виде отдельного строкового элемента. При этом любой элемент из списка может быть преобразован в нужный тип данных при помощи стандартных функций вроде int и float. Первым элементом списка argv является имя файла Python, который в данный момент запущен. Следом за ним идут переданные посредством командной строки параметры. На примере следующей программы мы продемонстрируем доступ к аргументам командной строки непосредственно из кода. Программа начинается с вывода на экран количества элементов в переменной argv и имени запущенного файла. После этого на экран выводятся все переданные программе параметры. Если программа была запущена без параметров, будет показано соответствующее сообщение. # Для доступа к переменным командной строки необходимо импортировать модуль sys import sys # Отображаем количество аргументов (включая название файла .py) print("Программа насчитывает", len(sys.argv), \ "аргументов командной строки.") # Выводим на экран имя файла .py print("Имя запущенного файла .py: ", sys.argv[0]) # Определяем, есть ли другие переданные параметры if len(sys.argv) > 1: # Отображаем все переданные параметры, за исключением имени файла print("Остальные аргументы:") for i in range(1, len(sys.argv)): print(" ", sys.argv[i]) else: print("Дополнительных аргументов нет.") Аргументы командной строки можно использовать для передачи программе любых входных значений, которые можно физически ввести в командную строку, то есть строк, целочисленных значений и чисел с плавающей запятой. Эти значения могут быть использованы в программе, как и любые другие. Взгляните на обновленный пример программы, суммирующей перечисленные в строках числа. Здесь имя файла мы не будем запрашивать у пользователя, а передадим посредством командной строки. # Импортируем системный модуль import sys # Отслеживаем, чтобы программа обязательно запускалась с одним переданным параметром if len(sys.argv) != 2: print("Имя файла необходимо передать в качестве", \ "аргумента.") quit() # Открываем на чтение файл, имя которого было передано в командной строке inf = open(sys.argv[1], "r") # Инициализируем сумму нулем total = 0 # Суммируем значения в файле line = inf.readline() while line != "": total = total + float(line) line = inf.readline() # Закрываем файл inf.close() # Выводим результат print("Сумма значений в файле", sys.argv[1], "составляет", total) |