2017-01-19 4 views
1

os.chdir()を使用して相対ユーザーフォルダに移動する方法はありますか?私はこのCDの機能を使用していますので、os.chdir()を相対ホームディレクトリ(/ home/usr /)に移動

私はbashのを作ってるんだし、私が見つけた唯一の問題はcd ~で、arg[0]が定義されていない:私は

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 
に変更したい

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

+1

環境変数 '$ HOME'を解析することができます – anishsane

答えて

4

いいえ、os.chdirは、システムコールの周りの単なるラッパーなので、そうしません。実際には~がディレクトリの正当な名前であると考えてください。

os.expanduserを使用すると、パスにを展開できます。これもuserのホームディレクトリへ~userを拡大すること

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

は注意してください。

+0

これは広く適用され、ユーザのホーム('〜/ private/dir')に関連するパスを扱い、(ある程度は)他のユーザのホーム相対パスも処理します( '〜otheruser/public/dir')です。 – ShadowRanger

+0

〜戻りパスが見つかりませんでしたエラーはなぜですか?コードを見直して質問を編集します。 – Seraf

関連する問題