Bagaimana cara mengetahui / mengubah direktori saat ini di shell Python?

219

Saya menggunakan Python 3.2 di Windows 7. Ketika saya membuka shell Python, bagaimana saya bisa tahu apa direktori saat ini dan bagaimana saya bisa mengubahnya ke direktori lain di mana modul saya berada?

astay13
sumber
Ini sudah dibahas [di sini] [1]: stackoverflow.com/questions/431684/how-do-i-cd-in-python
mudda
4
@ astay13 - Saya pikir Ignacio berarti Anda tidak bermaksud mengubah direktori ke jalur modul Anda. Anda mungkin harus memeriksa variabel lingkungan PYTHONPATH.
simon

Jawaban:

299

Anda dapat menggunakan osmodul.

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

Tetapi jika ini tentang menemukan modul lain: Anda dapat mengatur variabel lingkungan bernama PYTHONPATH, di Linux akan seperti

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

Kemudian, penerjemah juga mencari importmodul ed di tempat ini . Saya kira namanya akan sama di bawah Windows, tetapi tidak tahu bagaimana cara mengubahnya.

sunting

Di bawah Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(diambil dari http://docs.python.org/using/windows.html )

edit 2

... dan bahkan lebih baik: gunakan virtualenvdan virtualenv_wrapper, ini akan memungkinkan Anda untuk membuat lingkungan pengembangan tempat Anda dapat menambahkan jalur modul sesuka Anda ( add2virtualenv) tanpa mencemari instalasi Anda atau lingkungan kerja "normal".

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

wal-o-mat
sumber
Anda benar untuk mengedit pertanyaan Anda untuk menambahkan saran tentang PYTHONPATH, tetapi perhatikan bahwa OP menentukan Windows ...
simon
Dan apa masalah dengan PYTHONPATH di Windows? Tetapi saya memperbaiki jawaban saya.
wal-o-mat
Apakah saya harus mengatur PYTHONPATH di baris perintah Windows atau di shell Python?
astay13
2
@ astray13: Anda juga memiliki opsi untuk mengabaikan variabel lingkungan dan alih-alih menambahkan ke sys.pathdalam skrip Anda.
Steven Rumbalski
3
@ astay13: jangan diset PYTHONPATHsecara global jika Anda memiliki lebih dari satu Python yang diinstal (atau ada program yang menginstal bundel Python dengan mereka - dengan kata lain Anda tidak akan pernah tahu): itu dapat merusak instalasi Anda dengan cara yang misterius
jfs
18

kamu ingin

import os
os.getcwd()
os.chdir('..')
simon
sumber
1
os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ Sintaksis: EOL saat memindai string literal
AAI
1
@ Apa pun, Anda perlu menggandakan backslash jika Anda menggunakannya dalam string Python biasa (non-mentah). Python juga memungkinkan Anda menggunakan garis miring ke depan. Jadi, baik os.chdir('C:/Users/Ajeya/Documents'), atau os.chdir('C:\\Users\\Ajeya\\Documents'), atau os.chdir(r'C:\Users\Ajeya\Documents').
Charles Duffy
Akan baik untuk dicatat bahwa Anda menelepon os.getcwd()hanya untuk keperluan debugging sehingga kita bisa melihat apa direktori yang berfungsi sebelum kita mengubahnya. Kode untuk benar-benar mengubah cwdhanyaos.chdir('..')
Tusuk Gigi Anemone
15
>>> import os
>>> os.system('cd c:\mydir')

Bahkan, os.system()dapat menjalankan perintah apa pun yang dapat dijalankan oleh perintah windows, bukan hanya mengubah dir.

shankar_pratap
sumber
File "<stdin>", baris 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL saat memindai string literal
AAI
6

Mengubah direktori saat ini bukan cara untuk berurusan dengan menemukan modul dengan Python.

Sebaliknya, lihat dokumen untuk The Module Search Path untuk bagaimana Python menemukan modul mana yang akan diimpor.

Berikut adalah bit yang relevan dari bagian Modul Standar :

Variabel sys.path adalah daftar string yang menentukan jalur pencarian penerjemah untuk modul. Ini diinisialisasi ke jalur default yang diambil dari variabel lingkungan PYTHONPATH, atau dari bawaan bawaan jika PYTHONPATH tidak diatur. Anda dapat memodifikasinya menggunakan operasi daftar standar:

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

Untuk menjawab pertanyaan awal Anda tentang mendapatkan dan mengatur direktori saat ini:

>>> 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.
Steven Rumbalski
sumber
Jawaban ini adalah emas .. Tambahkan saja direktori proyek Anda seperti ini:import sys sys.path.append('/home/g/PycharmProjects/your_project/')
gies0r
6

Cara termudah untuk mengubah direktori kerja saat ini di python adalah menggunakan paket 'os'. Di bawah ini ada contoh untuk windows komputer:

# Import the os package
import os

# Confirm the current working directory 
os.getcwd()

# Use '\\' while changing the directory 
os.chdir("C:\\user\\foldername")
sambeet
sumber
penggunaan "\\" dan klarifikasi tentang komputer Windows. Tapi saya setuju jawaban yang diterima lebih deskriptif.
sambeet
4

Jika Anda import osdapat menggunakan os.getcwduntuk mendapatkan direktori kerja saat ini, dan Anda dapat menggunakan os.chdiruntuk mengubah direktori Anda

dokter gigi
sumber
0

Anda dapat mencoba ini:

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"

Aditya NS
sumber