Hướng dẫn how do i look at a directory in python? - làm cách nào để xem thư mục trong python?

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.

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

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

  • Cú pháp của OS.GetCwd:
  • os.getcwd()
    
  • Nếu thư mục không tồn tại thì
    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')
    
    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ề