Python lấy thư mục gốc từ đường dẫn

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

Vì 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

Làm cách nào để lấy thư mục từ đường dẫn os trong Python?

Sử dụng hệ điều hành. đường dẫn. dirname() để lấy thư mục thư mục (tên) từ một chuỗi đường dẫn. Nếu bạn chỉ muốn lấy tên thư mục ngay phía trên tệp, hãy sử dụng os.

Đường dẫn đến thư mục gốc là gì?

Làm cách nào để tìm thư mục gốc của cửa hàng? . Tuy nhiên, nếu bạn không thể tìm thấy nó, vui lòng sử dụng đường dẫn “ /sub_folder/site_root_folder ” để truy cập trực tiếp vào thư mục gốc của bạn.

Làm cách nào để trích xuất tên tệp từ đường dẫn trong Python?

Chương trình Python để lấy tên tệp từ đường dẫn tệp .
nhập os # tên tệp có phần mở rộng file_name = os. con đường. tên cơ sở ('/root/tệp. ext') # tên tệp không có phần mở rộng print(os. con đường. splitext(file_name)[0]) Chạy mã
nhập os print(os. con đường. splitext(file_name)).
từ pathlib nhập Đường dẫn in (Đường dẫn ('/ root/file. máy lẻ'). thân cây)