Главная страница

книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python


Скачать 2.24 Mb.
НазваниеСборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Анкоркнига заданий пайтон
Дата02.10.2022
Размер2.24 Mb.
Формат файлаdocx
Имя файлакнига практических заданий, pyton.docx
ТипСборник упражнений
#709959
страница38 из 69
1   ...   34   35   36   37   38   39   40   41   ...   69

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)
1   ...   34   35   36   37   38   39   40   41   ...   69


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