web-dev-qa-db-ja.com

Pythonシェルで現在のディレクトリを知り/変更するにはどうすればいいですか?

Windows 7でPython 3.2を使用しています。PythonShellを開いたときに、現在のディレクトリがどのようなものであるかを確認し、自分のモジュールが存在する別のディレクトリに変更する方法を教えてください。

185
astay13

osモジュールを使うことができます。

>>> import os
>>> os.getcwd()
'/home/user'
>>> os.chdir("/tmp/")
>>> os.getcwd()
'/tmp'

しかし、それが他のモジュールを見つけることに関するものであれば、LinuxではPYTHONPATHという環境変数を設定できます。

export PYTHONPATH=/path/to/my/library:$PYTHONPATH

それから、インタプリタはここでもimportedモジュールを検索します。 Windowsでも同じ名前になると思いますが、変更方法はわかりません。

編集

Windowsの場合

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

http://docs.python.org/using/windows.html から取得)

編集2

virtualenvvirtualenv_wrapperを使用すると、インストール環境や「通常の」作業環境を汚染することなく、モジュールパスを自由に追加できる開発環境(add2virtualenv)を作成できます。

http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html

254
wal-o-mat

欲しい

import os
os.getcwd()
os.chdir('..')
15
simon
>>> import os
>>> os.system('cd c:\mydir')

実際、os.system()は、dirを変更するだけでなく、windowsコマンドPromptが実行できるすべてのコマンドを実行できます。

14
shankar_pratap

Pythonで現在の作業ディレクトリを変更する最も簡単な方法は 'os'パッケージを使うことです。以下は、Windowsコンピュータの例です。

# Import the os package
import os

# Confirm the current working directory 
os.getcwd()

# Use '\\' while changing the directory 
os.chdir("C:\\user\\foldername")
6
sambeet

現在のディレクトリを変更することは、Pythonでモジュールを見つけることに対処する方法ではありません。

そうではなく、Pythonがどのモジュールをインポートするかを見つける方法については、 モジュール検索パス のドキュメントを参照してください。

これは 標準モジュール セクションからの関連ビットです:

変数sys.pathは、インタプリタのモジュールの検索パスを決定する文字列のリストです。環境変数PYTHONPATHから取られたデフォルトパス、またはPYTHONPATHが設定されていない場合は組み込みデフォルトから初期化されます。標準のリスト操作を使ってそれを修正することができます。

>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')

現在のディレクトリの取得と設定についてのあなたの最初の質問に答えて:

>>> help(os.getcwd)

getcwd(...)
    getcwd() -> path

    Return a string representing the current working directory.

>>> help(os.chdir)

chdir(...)
    chdir(path)

    Change the current working directory to the specified path.
6

もしあなたがimport osなら現在の作業ディレクトリを得るためにos.getcwdを使うことができ、あなたのディレクトリを変えるためにos.chdirを使うことができます

4
deontologician

これを試すことができます:

import os

current_dir = os.path.dirname(os.path.abspath(__file__))   # Can also use os.getcwd()
print(current_dir)                                         # prints(say)- D:\abc\def\ghi\jkl\mno"
new_dir = os.chdir('..\\..\\..\\')                         
print(new_dir)                                             # prints "D:\abc\def\ghi"


0
Aditya N.S