Mô-đun
from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
1, được giới thiệu trong Python 3.4 [PEP 428-Mô-đun PATHLIB-Đường dẫn hệ thống tập tin hướng đối tượng], làm cho trải nghiệm liên quan đến đường dẫn tốt hơn nhiều.pwd
/home/skovorodkin/stack
tree
.
└── scripts
├── 1.py
└── 2.py
Để có được thư mục làm việc hiện tại, hãy sử dụng
from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
2:from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
Để có được một đường dẫn tuyệt đối đến tệp tập lệnh của bạn, hãy sử dụng phương thức
from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
3:print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
Và để có được đường dẫn của một thư mục nơi đặt tập lệnh của bạn, truy cập
from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
4 [nên gọi from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
5 trước from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
4]:print[Path[__file__].resolve[].parent] # /home/skovorodkin/stack/scripts
Hãy nhớ rằng
from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
7 không đáng tin cậy trong một số tình huống: Làm thế nào để tôi có được đường dẫn của tệp được thực hiện hiện tại trong Python ?.Xin lưu ý rằng
from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
2, from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
3 và các phương thức print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
0 khác trả về các đối tượng đường dẫn [print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
1 trong trường hợp của tôi], không phải chuỗi. Trong Python 3,4 và 3.5 gây ra một số đau, bởi vì hàm tích hợp print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
2 chỉ có thể hoạt động với các đối tượng chuỗi hoặc byte và không hỗ trợ các đối tượng print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
0, vì vậy bạn phải chuyển đổi các đối tượng print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
0 thành các chuỗi hoặc sử dụng phương pháp Tùy chọn yêu cầu bạn thay đổi mã cũ:Tập lệnh tệp/2.py
from pathlib import Path
p = Path[__file__].resolve[]
with p.open[] as f: pass
with open[str[p]] as f: pass
with open[p] as f: pass
print['OK']
Đầu ra
python3.5 scripts/2.py
Traceback [most recent call last]:
File "scripts/2.py", line 11, in
with open[p] as f:
TypeError: invalid file: PosixPath['/home/skovorodkin/stack/scripts/2.py']
Như bạn có thể thấy,
print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
6 không hoạt động với Python 3.5.PEP 519 - Thêm giao thức đường dẫn hệ thống tệp, được triển khai trong Python 3.6, thêm hỗ trợ của các đối tượng
print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
7 vào hàm print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
2, vì vậy bây giờ bạn có thể chuyển các đối tượng print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
0 cho chức năng print[Path[__file__].resolve[]] # /home/skovorodkin/stack/scripts/1.py
2 trực tiếp:python3.6 scripts/2.py
OK
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 để có được 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 chỉ ở đây cho giải pháp nhận thư mục hiện tại trong Python, hãy sử dụng liên kết này.
Mục lục
- Thư mục là gì và chúng hoạt động như thế nào?
- Python có được thư mục hiện tại
- Thư mục thay đổi Python
- Hạn chế và cảnh báo
Thư mục là gì và chúng hoạt động như thế nào?
Python có được thư mục hiện tại
Thư mục thay đổi Python
Hạn chế và cảnh báo
Trong trường hợp bạn chưa quen với lập trình, các thư mục không có gì ngoài các thư mục. Các thư mục này có mặt bên trong một thư mục gốc, ví dụ:
print[Path[__file__].resolve[].parent] # /home/skovorodkin/stack/scripts
1 hoặc print[Path[__file__].resolve[].parent] # /home/skovorodkin/stack/scripts
2 và mỗi thư mục có thể chứa các tệp hoặc thư mục con.Để truy xuất một tệp trong Python, bạn cần biết đường dẫn chính xác để tiếp cận tệp, trong Windows, bạn có thể xem một đường dẫn tệp cụ thể bằng cách nhấp chuột phải vào tệp-> Thuộc tính-> General-> vị trí.
Tương tự, để chạy 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ý các tệp, thư mục làm việc hiện tại [CWD] là 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 các kịch bản này, lệnh Python ‘Nhận thư mục hiện tại, giúp bạn biết bạn đang ở thư mục nào.
Python Nhận thư mục hiện tại:Để trả về thư mục bạn hiện đang ở, chúng tôi sử dụng mô -đun HĐH để tương tác với hệ điều hành. Theo mô -đun HĐH, chúng tôi sử dụng phương thức print[Path[__file__].resolve[].parent] # /home/skovorodkin/stack/scripts
3 để trả về đường dẫn của thư mục hiện tại.
print[Path[__file__].resolve[].parent] # /home/skovorodkin/stack/scripts
#importing the os module
import os
#to get the current working directory
directory = os.getcwd[]
print[directory]
Cú pháp của OS.GetCwd:
Thư mục thay đổi Python
Hạn chế và cảnh báo
Trong trường hợp bạn chưa quen với lập trình, các thư mục không có gì ngoài các thư mục. Các thư mục này có mặt bên trong một thư mục gốc, ví dụ:
print[Path[__file__].resolve[].parent] # /home/skovorodkin/stack/scripts
1 hoặc print[Path[__file__].resolve[].parent] # /home/skovorodkin/stack/scripts
2 và mỗi thư mục có thể chứa các tệp hoặc thư mục con.Để truy xuất một tệp trong Python, bạn cần biết đường dẫn chính xác để tiếp cận tệp, trong Windows, bạn có thể xem một đường dẫn tệp cụ thể bằng cách nhấp chuột phải vào tệp-> Thuộc tính-> General-> vị trí.
os.chdir[path]
Parameters:
Tương tự, để chạy 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ý các tệp, thư mục làm việc hiện tại [CWD] là rất quan trọng. - The path to the new directory
Python sẽ không thể truy cập các tệp nếu chúng không có trong CWD. Chính trong các kịch bản này, lệnh Python ‘Nhận thư mục hiện tại, giúp bạn biết bạn đang ở thư mục nào.
Python Nhận thư mục hiện tại:
from pathlib import Path
print[Path.cwd[]] # /home/skovorodkin/stack
0Để trả về thư mục bạn hiện đang ở, chúng tôi sử dụng mô -đun HĐH để tương tác với hệ điều hành. Theo mô -đun HĐH, chúng tôi sử dụng phương thức print[Path[__file__].resolve[].parent] # /home/skovorodkin/stack/scripts
3 để trả về đường dẫn của thư mục hiện tại.
print[Path[__file__].resolve[].parent] # /home/skovorodkin/stack/scripts
- Cú pháp của OS.GetCwd:
-
os.getcwd[]
- Nếu thư mục không tồn tại thì
2 sẽ được trả về. Và trong trường hợp người dùng thiếu các quyền cần thiết để truy cập thư mục,from pathlib import Path p = Path[__file__].resolve[] with p.open[] as f: pass with open[str[p]] as f: pass with open[p] as f: pass print['OK']
3 được trả vềfrom pathlib import Path p = Path[__file__].resolve[] with p.open[] as f: pass with open[str[p]] as f: pass with open[p] as f: pass print['OK']