Различие между 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')