2011-11-23 61 views
132

Tôi đang sử dụng Python 3.2 trên Windows 7. Khi tôi mở vỏ Python, làm cách nào tôi có thể biết thư mục hiện tại là gì và làm cách nào để thay đổi thư mục đó thành một thư mục khác có mô đun của tôi?Làm cách nào để biết/thay đổi thư mục hiện tại trong trình bao Python?

+1

@Ignacio, Ý bạn là gì? – astay13

+0

Điều này đã được thảo luận [ở đây] [1]: http://stackoverflow.com/questions/431684/how-do-i-cd-in-python – mudda

+4

@ astay13 - Tôi nghĩ Ignacio có nghĩa là bạn không có ý định thay đổi thư mục thành đường dẫn mô-đun của bạn. Có lẽ bạn nên kiểm tra biến môi trường PYTHONPATH. – simon

Trả lời

188

Bạn có thể sử dụng các mô-đun os.

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

Nhưng nếu đó là về việc tìm kiếm các module khác: Bạn có thể thiết lập một biến môi trường được gọi là PYTHONPATH, dưới Linux sẽ như thế nào

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

Sau đó, tìm kiếm thông dịch viên cũng tại nơi này cho import module ed. Tôi đoán tên sẽ giống nhau trong Windows, nhưng không biết cách thay đổi.

chỉnh sửa

Dưới Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib 

(lấy từ http://docs.python.org/using/windows.html)

chỉnh sửa 2

... và thậm chí tốt hơn: sử dụng virtualenvvirtualenv_wrapper, điều này sẽ allo Bạn tạo một môi trường phát triển nơi bạn có thể thêm đường dẫn mô-đun theo ý muốn (add2virtualenv) mà không làm ô nhiễm môi trường làm việc của bạn hoặc môi trường làm việc "bình thường".

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

+0

bạn có quyền chỉnh sửa câu hỏi của mình để thêm gợi ý về 'PYTHONPATH', nhưng lưu ý rằng OP chỉ định Windows ... – simon

+0

Và vấn đề với PYTHONPATH trong Windows là gì? Nhưng tôi đã trả lời câu trả lời của mình. –

+0

Tôi có phải đặt PYTHONPATH trong dòng lệnh của Windows hoặc trong trình bao Python không? – astay13

4

Nếu bạn import os bạn có thể sử dụng os.getcwd để có được thư mục làm việc hiện tại, và bạn có thể sử dụng os.chdir để thay đổi thư mục của bạn

12

bạn muốn

import os 
os.getcwd() 
os.chdir('..') 
+1

os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ Cú phápError: EOL khi quét chuỗi ký tự – AAI

+1

@Whatever, bạn cần để tăng gấp đôi các dấu gạch chéo ngược nếu bạn sử dụng chúng trong chuỗi Python thông thường (không phải thô). Python cũng cho phép bạn sử dụng dấu gạch chéo về phía trước để thay thế. Do đó, hoặc là 'os.chdir (' C:/Users/Ajeya/Documents ') ', hoặc' os.chdir (' C: \\ Users \\ Ajeya \\ Documents ') ', hoặc' os.chdir (r 'C: \ Users \ Ajeya \ Documents') '. –

4

Thay đổi thư mục hiện hành không phải là cách để đối phó với việc tìm kiếm các module bằng Python.

Thay vào đó, hãy xem tài liệu cho The Module Search Path để biết cách Python tìm mô-đun nào cần nhập.

Dưới đây là một chút có liên quan từ Standard Modules phần:

The variable sys.path is a list of strings that determines the interpreter’s search path for modules. It is initialized to a default path taken from the environment variable PYTHONPATH, or from a built-in default if PYTHONPATH is not set. You can modify it using standard list operations:

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

Trong câu trả lời câu hỏi ban đầu của bạn về việc tìm và thiết lập thư mục hiện hành:

>>> 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. 
7
>>> import os 
>>> os.system('cd c:\mydir') 

Trong thực tế, os.system() có thể thực hiện bất kỳ lệnh mà cửa sổ lệnh nhắc có thể thực hiện, không chỉ thay đổi dir.

+0

Tệp "", dòng 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ Cú phápError: EOL khi quét chuỗi chữ – AAI

0

Cách dễ nhất để thay đổi thư mục làm việc hiện tại trong python là sử dụng gói 'os'. Dưới đây là ví dụ về máy tính windows:

#import the os package 
import os 
# Confirm the current working directory 
os.getcwd() 
# use '\\' while chaning the directory 
os.chdir("C:\\user\\foldername") 
+0

Điều này khác với câu trả lời được chấp nhận như thế nào? – Iceman

+0

sử dụng "\\" và làm rõ về máy tính Windows. Nhưng tôi đồng ý câu trả lời được chấp nhận là mô tả hơn. – sambeet

Các vấn đề liên quan