Làm thế nào để biết / thay đổi thư mục hiện tại trong Python shell?


219

Tôi đang sử dụng Python 3.2 trên Windows 7. Khi tôi mở trình bao 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 nó thành thư mục khác có mô-đun của tôi?


Điều này đã được thảo luận [tại đây] [1]: 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 mình. Có lẽ bạn nên kiểm tra biến môi trường PYTHONPATH.
simon

Câu trả lời:


299

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

>>> 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 mô-đun khác: Bạn có thể đặt một biến môi trường được gọi PYTHONPATH, trong Linux sẽ giống như

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

Sau đó, trình thông dịch cũng tìm kiếm tại nơi này cho importcác mô-đun ed. Tôi đoán tên sẽ giống với Windows, nhưng không biết cách thay đổi.

biên tập

Trong Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(được lấy từ http://docs.python.org/USE/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ẽ cho phép bạn tạo một môi trường phát triển nơi bạn có thể thêm các đường dẫn mô-đun như bạn muốn ( add2virtualenv) mà không làm ô nhiễm cài đặt hoặc môi trường làm việc "bình thường" của bạn.

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


Bạn có quyền chỉnh sửa câu hỏi của mình để thêm đề xuất PYTHONPATH, nhưng lưu ý rằng OP chỉ định Windows ...
simon

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

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

2
@ Astray13: Bạn cũng có tùy chọn bỏ qua biến môi trường và thay vào đó sẽ thêm vào sys.pathbên trong tập lệnh của bạn.
Steven Rumbalski

3
@ astay13: không được đặt PYTHONPATHtrên toàn cầu nếu bạn đã cài đặt nhiều hơn một Python (hoặc có các chương trình được cài đặt gói Python đó với chúng - nói cách khác bạn sẽ không bao giờ biết): nó có thể phá vỡ cài đặt của bạn theo những cách bí ẩn
jfs

18

bạn muốn

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

1
os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL trong khi quét chuỗi ký tự
AAI

1
@ Bất cứ điều gì, bạn cần tăng gấp đôi 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 thô). Python cũng cho phép bạn sử dụng dấu gạch chéo về phía trước. Do đó, hoặc os.chdir('C:/Users/Ajeya/Documents'), hoặc os.chdir('C:\\Users\\Ajeya\\Documents'), hoặc os.chdir(r'C:\Users\Ajeya\Documents').
Charles Duffy

Sẽ là tốt để lưu ý rằng bạn os.getcwd()chỉ gọi cho mục đích gỡ lỗi để chúng tôi có thể xem thư mục làm việc là gì trước khi chúng tôi thay đổi nó. Mã để thực sự thay đổi cwdchỉ làos.chdir('..')
Tăm Anemone

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

Trong thực tế, os.system()có thể thực thi bất kỳ lệnh nào mà dấu nhắc lệnh windows có thể thực thi, không chỉ thay đổi dir.


Tệp "<stdin>", dòng 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ Cú pháp: EOL trong khi quét chuỗi ký tự
AAI

6

Thay đổi thư mục hiện tại không phải là cách để đối phó với việc tìm kiếm các mô-đun trong Python.

Thay vào đó, hãy xem các tài liệu cho Đường dẫn tìm kiếm mô-đun để biết Python tìm mô-đun nào để nhập.

Đây là một chút có liên quan từ phần Mô-đun chuẩn :

Biến sys.path là một danh sách các chuỗi xác định đường dẫn tìm kiếm của trình thông dịch cho các mô-đun. Nó được khởi tạo cho một đường dẫn mặc định được lấy từ biến môi trường PYTHONPATH hoặc từ mặc định tích hợp nếu PYTHONPATH không được đặt. Bạn có thể sửa đổi nó bằng cách sử dụng các hoạt động danh sách tiêu chuẩn:

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

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

>>> 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.

Câu trả lời này là vàng .. Chỉ cần thêm thư mục dự án của bạn như thế này:import sys sys.path.append('/home/g/PycharmProjects/your_project/')
gies0r

6

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à một ví dụ cho máy tính windows:

# Import the os package
import os

# Confirm the current working directory 
os.getcwd()

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

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ả nhiều hơn.
sambeet

4

Nếu bạn import oscó thể sử dụng os.getcwdđể lấy 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 mình


0

Bạn có thể thử điều này:

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"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.