Chúng tôi có thể lấy vị trí (đường dẫn) của tệp script đang chạy. py với __file__. __file__ rất hữu ích để đọc các tệp khác và nó cung cấp vị trí hiện tại của tệp đang chạy. Nó khác nhau trong các phiên bản. Trong Trăn 3. 8 trở về trước, __file__ trả về đường dẫn đã chỉ định khi thực thi lệnh Python.
Chúng ta có thể nhận được một đường dẫn tương đối nếu một đường dẫn tương đối được chỉ định. Nếu chúng tôi chỉ định một đường dẫn tuyệt đối trong os. con đường. abspath(), nó sẽ được trả về như cũ, vì vậy nếu __file__ là một đường dẫn tuyệt đối, sẽ không có lỗi xảy ra ngay cả khi chúng ta đặt os. con đường. abspath(__file__)
Trong hướng dẫn ngắn này, chúng ta hãy xem cách bạn có thể sử dụng python để lấy thư mục hiện tại và cách thay đổi thư mục làm việc
Trong trường hợp bạn ở đây chỉ vì giải pháp lấy thư mục hiện tại bằng Python, hãy sử dụng cái này
Mục lục
- Thư mục là gì và chúng hoạt động như thế nào?
- Python lấy thư mục hiện tại
- Python thay đổi thư mục
- Hạn chế và Hãy cẩn thận
Thư mục là gì và chúng hoạt động như thế nào?
Trong trường hợp bạn chưa quen với lập trình, các thư mục chẳng là gì ngoài các thư mục. Các thư mục này có mặt trong một thư mục gốc, vd. C:\ hoặc D:\ và mỗi thư mục có thể chứa tệp hoặc thư mục con
Để truy xuất tệp trong Python, bạn cần biết chính xác đường dẫn để đến tệp, trong Windows, bạn có thể xem đường dẫn của tệp cụ thể bằng cách nhấp chuột phải vào Tệp-> Thuộc tính-> Chung-> Vị trí
Tương tự, để chạy một tập lệnh, thư mục làm việc cần được đặt thành thư mục chứa tập lệnh. Tuy nhiên, trong khi cố gắng chạy nhiều tập lệnh hoặc trong khi xử lý tệp, Thư mục làm việc hiện tại (CWD) rất quan trọng
Python sẽ không thể truy cập các tệp nếu chúng không có trong CWD. Chính trong những tình huống này, lệnh 'lấy thư mục hiện tại' của Python giúp bạn biết hiện tại bạn đang ở thư mục nào
Python lấy thư mục hiện tại
Để trả lại thư mục bạn đang ở, chúng tôi sử dụng mô-đun HĐH để tương tác với hệ điều hành. Trong mô-đun OS, chúng tôi sử dụng phương thức #importing the os module import os #to get the current working directory directory = os.getcwd() print(directory) 0 để trả về đường dẫn của thư mục hiện tại
Cú pháp của os. getcwd
os.getcwd()Mã cho python lấy thư mục hiện tại
#importing the os module import os #to get the current working directory directory = os.getcwd() print(directory)Đầu ra có thể khác nhau tùy thuộc vào thư mục bạn đang ở nhưng nó sẽ bắt đầu từ thư mục gốc, vd. D:\ và thư mục có tiền tố là #importing the os module import os #to get the current working directory directory = os.getcwd() print(directory) 2
Python thay đổi thư mục
Tương tự như phương thức #importing the os module import os #to get the current working directory directory = os.getcwd() print(directory) 3 mà chúng ta đã sử dụng trong Python để lấy thư mục hiện tại, chúng ta sử dụng phương thức #importing the os module import os #to get the current working directory directory = os.getcwd() print(directory) 4 trong mô-đun os để thay đổi thư mục hiện tại
Thư mục hiện tại được thay đổi để truy xuất tệp hoặc chạy tập lệnh có trong các thư mục khác
Khi bạn đang làm việc trên một dự án với nhiều người, có thể bạn cần nhập tệp hoặc dữ liệu từ một vị trí cụ thể trong dự án mà không cần ghi lại đường dẫn đầy đủ
Do đó, bạn muốn tìm ra đường dẫn liên quan đến thư mục làm việc hiện tại nơi bạn chạy mã Python của mình
Đường dẫn tương đối bắt đầu bằng /, ./ hoặc ../
Để có được đường dẫn tương đối trong Python, trước tiên bạn phải tìm vị trí của thư mục làm việc nơi lưu trữ tập lệnh hoặc mô-đun. Sau đó, từ vị trí đó, bạn có được đường dẫn tương đối đến tệp muốn
Mục lục
1Đường dẫn tương đối trong Python là gì?
Đường dẫn tương đối trong Python là đường dẫn mô tả vị trí của thư mục so với điểm vào nơi bạn chạy tập lệnh Python
Vì vậy, giả sử bạn chạy mã Python của mình trong ~/home/projects/example-project/app.py
Đây là điểm vào nơi bạn chạy mã cấp cao nhất của mô-đun python và đóng vai trò là điểm bắt đầu cho đường dẫn tương đối. Đường dẫn tương đối thường bắt đầu bằng /, ./ hoặc ../
Để giải thích thêm, chúng ta hãy xem các tệp và thư mục trong import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)0 này
~/home/projects/example-project/ ├── app.py ├── cdk.context.json ├── cdk.json ├── mypy.ini ├── README.md ├── requirements.txt ├── src │ ├── __init__.py │ ├── bin │ │ ├── __init__.py │ │ ├── environments │ │ └── load_dotenv.py │ ├── lib │ │ ├── __init__.py │ │ ├── api │ │ ├── compute │ │ ├── constructs │ │ ├── database │ │ ├── skeleton │ │ └── storage │ └── main.py ├── tests │ ├── __init__.py │ └── test_main.py └── tox.iniVì vậy, ví dụ: nếu bạn cần truy cập import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)1 thì đường dẫn tương đối là import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)2 trong dự án Python này
Sử dụng đường dẫn tương đối đơn giản hóa mã vì bạn không cần viết đường dẫn tuyệt đối đầy đủ để tìm tệp hoặc thư mục trong dự án Python của mình
Cách tìm đường dẫn tương đối trong Python
Bạn có thể chạy tập lệnh Python của mình trên các hệ điều hành khác nhau, do đó bạn muốn tự động tìm đường dẫn đầy đủ của tệp mà bạn muốn nhập vào mã của mình thay vì mã hóa cứng nó. Điều này có thể được thực hiện bằng cách kết hợp đường dẫn tuyệt đối với đường dẫn tương đối để lấy tệp hoặc thư mục trong dự án của bạn
Chúng tôi sẽ sử dụng import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)3 từ ví dụ trước và từ thư mục làm việc này, chúng tôi muốn lấy. /src/lib đường dẫn tương đối
Để có được đường dẫn tương đối trong Python, bạn viết đoạn mã sau
import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)Trước tiên, bạn phải nhập mô-đun import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)4 bằng Python để bạn có thể chạy các chức năng của hệ điều hành trong mã của mình
Sau đó, bạn tạo biến import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)5 để tìm nạp thư mục hiện tại so với thư mục gốc. Đây là đường dẫn đầy đủ đến thư mục làm việc của bạn, trong trường hợp này là ____6_______6
Lợi thế để có được đường dẫn tuyệt đối trên hệ điều hành của bạn là nó có thể chạy tập lệnh trên các hệ thống khác nhau trên các thư mục làm việc khác nhau
Biến import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)7 là một chuỗi trong đó bạn xác định vị trí của thư mục mà bạn muốn tìm nạp so với thư mục làm việc. Trong trường hợp này, import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)8
Sau đó, chúng tôi sử dụng import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)5 và kết hợp nó qua /Users/dannysteenman/projects/example-project/src/lib/0 với import os absolute_path = os.path.dirname(__file__) relative_path = "src/lib" full_path = os.path.join(absolute_path, relative_path)7 để có được đường dẫn đầy đủ đến thư mục lib, kết quả là
/Users/dannysteenman/projects/example-project/src/lib/Phần kết luận
Như bạn có thể thấy, một đường dẫn tương đối có thể hữu ích để đơn giản hóa mã của bạn mà không cần phải viết ra đường dẫn đầy đủ đến một thư mục hoặc tệp trong mã Python của bạn
Thay vào đó, bạn chỉ trỏ đến vị trí của một thư mục liên quan đến thư mục làm việc của bạn hoặc điểm vào của tập lệnh Python của bạn