Это различие между текущим рабочим каталогом и путями поиска модулей объясняет, почему многие сценарии в данной книге, которые должны действовать в текущем рабочем каталоге (а не в том, имя которого передано), запускаются командной строкой вида:
C:\temp> python C:\…\PP4E\Tools\cleanpyc.py обработка cwd
В данном примере сам файл сценария на языке Python находится в каталоге C:\…\PP4E\Tools, но поскольку он запускается из C:\temp, то обрабатывает файлы, содержащиеся в C:\temp (то есть в текущем рабочем каталоге, а не исходном каталоге сценария). Чтобы обработать с помощью такого сценария файлы, находящиеся где-то в другом месте, нужно просто изменить текущий рабочий каталог с помощью команды cd и перейти в каталог, который должен быть обработан:
C:\temp> cd C:\PP4thEd\Examples
C:\PP4thEd\Examples> python C:\…\PP4E\Tools\cleanpyc.py обработка cwd
Поскольку текущий рабочий каталог всегда неявно определен, сценарий узнает, какой каталог должен быть обработан, от команды cd с той же степенью определенности, что и при явной передаче имени каталога сценарию, как показано ниже (примечание, касающееся переносимости: в других примерах команд вам может потребоваться заключить *.py в кавычки, чтобы предотвратить подстановку имен файлов, которая выполняется в некоторых оболочках Unix):
C:\…\PP4E\Tools> python find.py *.py C:\temp обработка указанного каталога
В этой командной строке текущим рабочим каталогом является каталог, содержащий запускаемый сценарий, который должен быть выполнен (обратите внимание на отсутствие пути в имени файла сценария). Но поскольку этот сценарий обрабатывает каталог, явно указанный в командной строке (C:\temp), в данном случае не имеет никакого значения, какой каталог является текущим рабочим каталогом. Наконец, если потребуется выполнить такой сценарий, расположенный в некотором другом каталоге, для обработки файлов, находящихся в третьем каталоге, можно просто указать пути каталогов для обоих:
C:\temp> python C:\…\PP4E\Tools\find.py *.cxx C:\PP4thEd\Examples\PP4E
В этом случае для импорта будут доступны файлы в исходном каталоге сценария PP4E\Tools, а обрабатываться будут файлы в каталоге, указанном в командной строке, при этом текущим рабочим каталогом будет совершенно другой каталог (C:\temp). Использование последней формы требует больше вводить с клавиатуры, тем не менее в этой книге вам еще не раз встретятся различные текущие рабочие каталоги и командные строки с явными путями к сценариям.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011