sys.argv
Для доступа к параметрам командной строки в программах на Python используется
список sys.argv
, доступный из библиотечного модуля sys
. Для подключения
модуля нужно добавить строчку
import sys
в начало программы.
Нулевым элементом списка sys.argv[0]
является имя самой программы, остальные
элементы — параметры командной строки, указанные после имени программы.
Пример. Пусть у нас имеется следующая программа example.py
:
import sys
print(sys.argv)
Тогда при запуске из консоли получим:
C:\Users\Mazdaywik>python example.py one two three
['example.py', 'one', 'two', 'three']
Список sys.argv
нам сегодня потребуется при выполнении лабораторной работы.
Нужно будет выполнить следующие действия и в конце занятия продемонстрировать окно консоли с процессом работы.
D:\TEMP
:
C:\Users\User>D:
D:\>cd D:\TEMP
D:\TEMP>
Desktop
.
На Windows:
C:\Users\‹ваше имя›>cd Desktop
C:\Users\‹ваше имя›\Desktop>
На Linux (оболочка Bash):
[‹ваше имя›@‹имя компьютера›:~]$ cd Desktop
[‹ваше имя›@‹имя компьютера›:~/Desktop]$
На macOS (оболочка Zsh):
‹ваше имя›@‹имя компьютера›:~ % cd Desktop
‹ваше имя›@‹имя компьютера›:~/Desktop %
Файлы, значки которых отображаются на рабочем столе, на самом деле лежат
в папке Desktop
. И наоборот, если создать файл в папке Desktop
, то его
значок отобразится на рабочем столе.
D:\TEMP
или Desktop
)
создайте папку lab6
.lab6
.example.txt
с произвольным текстом на английском языке. Например, таким:
To be, or not to be, that is the question;
Whether 'tis nobler in the mind to suffer
The Slings and Arrows of outrageous Fortune
Or to take arms against a sea of troubles,
And by opposing, end them.
На Windows используйте copy con example.txt
, на macOS — cat > example.txt
.
example.txt
в файл copy.txt
.dir
или ls
)copy.txt
.lab6
файл show_file.py
со следующим содержимым:
import sys
def show_file(filename):
with open(filename) as f:
for line in f:
print(line, end='')
if len(sys.argv) > 1:
show_file(sys.argv[1])
else:
print('No filename')
D:\TEMP\lab6>python show_file.py
…
D:\TEMP\lab6>python show_file.py example.txt
…
D:\TEMP\lab6>python show_file.py show_file.py
…
(На macOS вместо python
следует использовать python3
.)
show_file.py
в num_file.py
.num_file.py
в среде IDLE (File → Open…), добавьте в программу
нумерацию строк (см. Лабораторную работу № 2, функцию
view_enumerated(filename)
).D:\TEMP\lab6>python num_file.py
…
D:\TEMP\lab6>python num_file.py example.txt
…
D:\TEMP\lab6>python num_file.py show_file.py
…
D:\TEMP\lab6>python num_file.py num_file.py
…
lab6
:
D:\TEMP\lab6>cd ..
D:\TEMP>
Если выводится сообщение «Процесс не может получить доступ к файлу, так как этот файл занят другим процессом», значит, нужно закрыть открытые окна Python и блокнота с файлами, находящимися в этой папке.
lab6
в папку ‹ваши имя и фамилия›
.На прошлом занятии вы остановились на одном из пунктов в списке выше
(большинство студентов на пункте 10), после чего выполнили пункт 15,
т.е. переименовали подпапку lab6
в папке D:\TEMP
в папку ‹ваши имя
и фамилия›
.
Для того, чтобы продолжить выполнять лабораторную работу с того места, где Вы остановились в прошлый раз, выполните следующие шаги:
D:\TEMP
.D:\TEMP>rmdir /q /s lab6
Она удалит папку lab6
, ошибочно оставленную студентом другой группы.
dir
просмотрите содержимое текущей папки. Найдите
в выводе команды папку ‹ваши имя и фамилия›
, созданную на предыдущем
занятии.lab6
(команда ren
), перейдите
в неё (команда cd
) и продолжайте выполнять предыдущую лабораторную
работу.