Почему os.chdir () не может изменить dir в этом случае? - PullRequest
0 голосов
/ 28 апреля 2020

---- ввод

print(os.getcwd(), '\n')
print(os.listdir(), '\n')

Gui_path = '/Gui'

os.chdir(Gui_path)

---- вывод

C: \ Users \ vhass \ Documents \ Проекты кодирования \ The Vault

C: \ Users \ vhass \ Documents \ Проекты кодирования \ Хранилище

['application.py', 'crypto.py', 'encrypting.py', 'genaccount.py', 'Gui ',' Home.py ',' icons ',' login.py ',' main.py ',' Pics ',' test.py ',' Usernamepass.py ',' pycache ' ]

Traceback (последний вызов был последним): файл "C: \ Users \ vhass \ Documents \ Coding Projects \ The хранилище \ login.py", строка 19, в os.chdir (Gui_path) FileNotFoundError : [WinError 2] Системе не удается найти указанный файл: '/ Gui'

note **** Путь в этом проекте не stati c и может быть изменен в зависимости от предпочтений пользователя, поэтому я не могу использовать полный путь.

1 Ответ

0 голосов
/ 28 апреля 2020

Проблема в том, что вы указываете полный путь, а не относительный. os.chdir('/Gui') пытается go перейти в каталог root (/) и найти там папку Gui.

Я думаю, вы пытаетесь найти папку Gui относительно текущего каталога. Попробуйте что-то вроде

>>> import os
>>> os.getcwd()
'/Users/tyler/tmp/stackoverflow'
>>> os.listdir()
['a', 'f', 'Gui', 'c', 'd', 'e', 'b']
>>> os.chdir(os.getcwd() + '/Gui') # <- This is the important line
>>> os.getcwd()
'/Users/tyler/tmp/stackoverflow/Gui'
>>> os.listdir()
['HELLO']
>>>

Посмотрите, как мы выполняем объединение строк os.getcwd() + '/Gui', а не просто '/Gui'? Это гарантирует, что мы ищем каталог, в котором мы находимся.

Вы также должны взглянуть на stdlib pathlib , чтобы найти другие полезные примитивы и убедиться, что ваш код обрабатывает странные крайние случаи файловой системы.

...