2017-01-19 8 views
1

Есть ли способ использовать os.chdir() для перехода в папку с относительным пользователем?os.chdir() к родному домашнему каталогу (/ home/usr /)

Я делаю Баш и единственный вопрос, который я нашел это cd ~, arg[0] не определен, так как я использую этот компакт-диск функции:

def cd(args): 
    os.chdir(args[0]) 
    return current_status 

Что я хочу изменить в

def cd(args): 
    if args[0] == '~': 
     os.chdir('/home/') 
# Here I left it to /home/ since I don't know how 
# to get the user's folder name 
    else: 
     os.chdir(args[0]) 
    return current_status 
+1

Вы можете анализировать переменную окружения '$ HOME' – anishsane

ответ

4

Нет, os.chdir не будет этого делать, поскольку это всего лишь тонкая обертка вокруг системного вызова. Считайте, что ~ фактически является юридическим именем для каталога.

Вы можете, однако, использовать os.expanduser, чтобы развернуть ~ в пути.

def cd(path): 
    os.chdir(os.path.expanduser(path)) 

Обратите внимание, что это также будет расширяться ~user в домашний каталог для user.

+0

Что более широко применимо, оно обрабатывает пути относительно дома пользователя (' ~/private/dir') и (в некоторой степени) обрабатывает другие относительные пути для домашних пользователей ('~ otheruser/государственные/dir'). – ShadowRanger

+0

Почему ~ возвращающий путь не найден ошибка? Я просмотрю свой код и отредактирую свой вопрос. – Seraf