Опубликован: 14.06.2015 | Доступ: свободный | Студентов: 4649 / 499 | Длительность: 21:48:00
Авторские права: Creative Commons Attribution 3.0
Лекция 15:

Автоматизация типичных задач на вашем компьютере

28.3. Аргументы командной строки

В предыдущих главах мы рассмотрели ряд программ, которые запрашивали у пользователя имя файла, используя функцию raw_input, и затем читали и обрабатывали данные из файла:

name = raw_input('Enter file:')
handle = open(name, 'r')
text = handle.read()
...
  

Можно несколько упростить подобные программы, получая имя файла из командной строки, которая используется при запуске программы на Питоне. До сих пор мы просто запускали программу и отвечали на ее запросы:

python words.py
Enter file: mbox-short.txt
...
  

В командной строке можно указать дополнительные подстроки после имени файла с программой Питона, их обычно называют аргументами командной строки. Вот простая программа, демонстрирующая чтение аргументов из командной строки:

import sys
print 'Count:', len(sys.argv)
print 'Type:', type(sys.argv)
for arg in sys.argv:
print 'Argument:', arg
  

Содержимое переменной sys.argv является списком строк, в котором первая строка – это имя Питон-программы, а следующие строки представляют собой аргументы командной строки, указанные в команде после имени файла с программой. Ниже приведен вывод нашей программы для конкретной командной строки:

python argtest.py hello there
Count: 3
Type: <type 'list'>
Argument: argtest.py
Argument: hello
Argument: there
  

Здесь 3 аргумента командной строки передаются нашей программе в виде трехэлементного списка. Первым элементом является имя программы (argtest.py), двумя другими (hello и there) – слова, указанные в команде после имени файла.

Можно переписать нашу программу, чтобы она читала файл, получая его имя из командной строки:

import sys
name = sys.argv[1]
handle = open(name, 'r')
text = handle.read()
print name, 'is', len(text), 'bytes'
  

В качестве имени файла берется второй аргумент командной строки (пропускается имя программы, соответствующее индексу [0]). Мы открываем файл, читаем его содержимое и печатаем его длину в байтах:

python argfile.py mbox-short.txt
mbox-short.txt is 94626 bytes
  

Использование аргументов командной строки облегчает повторное использование Питон-программ, особенно когда нужно вводить только одну или две строки.

Ксения Шошина
Ксения Шошина

курс Программирование на Python

Илья Кизилов
Илья Кизилов

В лекции приводится программа для сортировки слов по их длинне. В коде ошибка. Я исправил так:

def sort_by_length(words):

words = words.split()

t = []

for word in words:

t.append((len(word), word))

t.sort(reverse=True)

res = []

for length, word in t:

res.append(word)

return res

print(sort_by_length(words))

 

Кто ещё как сделал?

 

Фёдор Локтионов
Фёдор Локтионов
Россия, г. Москва
Анатолий Иванцов
Анатолий Иванцов
Россия