Различие между CWD и импортом пути поиска в Python?

Я немного запутался по поводу различия между CWD и пути импорта в Python.

Из того, что я понимаю:

C:\temp> python C:\...\PyTools\ex.py

Файл сценария находится в C:...\PP4E\Tools\, но сценарий обрабатывает файлы, расположенные в C:\temp? Или я что-то ошибаюсь?

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

C:\temp> python C:\...\PyTools\find.py *.py C:\...\Directory

Опять же Из того, что я понимаю, скрипт может обращаться к файлам в каталоге PyTools и обрабатывать файлы в \Directory. Но CWD остается \ temp?

Так добавляется ли \ temp к пути в python? CWD когда-либо добавляется к пути Python? Я немного растерялся, если кто-нибудь мне это объяснит, я был бы очень благодарен. Благодарю.

1 ответ

Решение

Путь поиска Python - где он ищет модули, названные в import заявления - включает в себя содержание PYTHONPATH переменная среды, значение sys.pathи каталог, в котором находился запущенный скрипт. Ваш текущий рабочий каталог (cwd) никогда не является частью пути поиска Python по умолчанию.

Ваш cwd когда вы запускаете ваш скрипт Python является cwd вашего сценария; это означает, что файловые операции, такие как open(), будет ссылаться на файлы в вашем текущем каталоге без каких-либо определителей пути. Например, если вы находитесь в c:\tempи вы запускаете скрипт Python, и ваш скрипт делает это...

fd = open('myfile.txt')

... тогда вы будете открывать c:\temp\myfile.txt,

Если вы хотите открыть файлы в другом каталоге, вы можете указать полный путь к open:

fd = open('c:\\anotherdir\\myfile.txt')

Или вы можете позвонить os.chdir() в вашем коде:

os.chdir('c:\\anotherdir')
fd = open('myfile.txt')
Другие вопросы по тегам