Материалы по курсу «Основы программирования»

Лабораторная работа № 6. Работа в консоли ОС

Список 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 нам сегодня потребуется при выполнении лабораторной работы.

Задание на лабораторную (4 балла)

Нужно будет выполнить следующие действия и в конце занятия продемонстрировать окно консоли с процессом работы.

  1. Откройте окно консоли.
  2. Перейдите в папку, в которой Вы будете работать.
    • Если работаете на университетском компьютере, перейдите в папку 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, то его значок отобразится на рабочем столе.

  3. Используя командную строку, в выбранной папке (D:\TEMP или Desktop) создайте папку lab6.
  4. Перейдите в папку lab6.
  5. Используя командную строку, создайте текстовый файл 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.

  6. Скопируйте файл example.txt в файл copy.txt.
  7. Выведите на экран подробное содержимое папки (dir или ls)
  8. Удалите файл copy.txt.
  9. Откройте Python, создайте в папке 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')
    
  10. Выполните в командной строке следующие команды:
    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.)

  11. Скопируйте файл show_file.py в num_file.py.
  12. Откройте файл num_file.py в среде IDLE (File → Open…), добавьте в программу нумерацию строк (см. Лабораторную работу № 2, функцию view_enumerated(filename)).
  13. Выполните следующие команды:
    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
    …
    
  14. Поднимитесь в папку, родительскую для папки lab6:
    D:\TEMP\lab6>cd ..
    
    D:\TEMP>
    

    Если выводится сообщение «Процесс не может получить доступ к файлу, так как этот файл занят другим процессом», значит, нужно закрыть открытые окна Python и блокнота с файлами, находящимися в этой папке.

  15. Переименуйте папку lab6 в папку ‹ваши имя и фамилия›.

Продолжение лабораторной работы № 6 на следующем занятии

На прошлом занятии вы остановились на одном из пунктов в списке выше (большинство студентов на пункте 10), после чего выполнили пункт 15, т.е. переименовали подпапку lab6 в папке D:\TEMP в папку ‹ваши имя и фамилия›.

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

  1. Перейдите в папку D:\TEMP.
  2. Выполните команду
    D:\TEMP>rmdir /q /s lab6
    

    Она удалит папку lab6, ошибочно оставленную студентом другой группы.

  3. При помощи команды dir просмотрите содержимое текущей папки. Найдите в выводе команды папку ‹ваши имя и фамилия›, созданную на предыдущем занятии.
  4. Далее, всё зависит от того, нашлась ли папка:
    • Если папка нашлась, переименуйте её в lab6 (команда ren), перейдите в неё (команда cd) и продолжайте выполнять предыдущую лабораторную работу.
    • Если папка не нашлась — продолжайте предыдущую лабораторную работу с пункта 3.