Tệp đường dẫn Python ở đâu?

Thư mục hiện tại. Bạn có thể thay đổi thư mục Python hiện tại để nó có thể định vị bất kỳ mô-đun nào được ứng dụng của bạn sử dụng

  • thư mục mặc định. Ngay cả khi bạn không xác định bất kỳ biến môi trường nào và thư mục hiện tại không tạo ra bất kỳ mô-đun có thể sử dụng nào, Python vẫn có thể tìm thấy các thư viện của riêng mình trong tập hợp các thư mục mặc định được đưa vào như một phần của thông tin đường dẫn riêng

  • Cách tìm thông tin đường đi

    Việc biết thông tin về đường dẫn hiện tại sẽ rất hữu ích vì việc thiếu đường dẫn có thể khiến ứng dụng của bạn bị lỗi. Các bước sau minh họa cách bạn có thể lấy thông tin đường dẫn
    1. Mở vỏ Python

      Bạn thấy cửa sổ Python Shell xuất hiện

    2. Nhập nhập sys và nhấn Enter

    3. Nhập cho p trong sys. con đường. print[p] trong một ô mới và bấm Run Cell

      Bạn thấy một danh sách các thông tin đường dẫn, như thể hiện trong hình bên dưới. Danh sách của bạn có thể khác với danh sách hiển thị trong hình, tùy thuộc vào nền tảng của bạn, phiên bản Python bạn đã cài đặt và các tính năng Python bạn đã cài đặt

    Một cách khác để tìm đường dẫn

    Hệ thống sys. thuộc tính đường dẫnthuộc tính đáng tin cậy nhưng có thể không phải lúc nào cũng chứa mọi đường dẫn mà Python có thể nhìn thấy. Nếu bạn không thấy đường dẫn cần thiết, bạn luôn có thể kiểm tra ở một nơi khác mà Python tìm kiếm thông tin. Các bước sau đây cho thấy cách thực hiện tác vụ này
    1. Trong một ô mới, nhập nhập os và nhấn Enter

    2. gõ hệ điều hành. môi trường ['PYTHONPATH']. tách [os. đường dẫn] và nhấn Enter

      Khi bạn đã xác định một biến môi trường PYTHONPATH , bạn sẽ thấy một danh sách các đường dẫn, như minh họa trong hình bên dưới. Tuy nhiên, nếu bạn không xác định biến môi trường, thay vào đó bạn sẽ thấy thông báo lỗi.

      Hệ thống . Thuộc tính path không bao gồm hàm split[] , đó là lý do tại sao ví dụ này sử dụng for loop with it. However, the os. thuộc tính environ['PYTHONPATH'] có chứa hàm split[] nên bạn có thể sử dụng nó để tạo một .

      Bạn phải cung cấp split[] giá trị cần tìm khi chia tách danh sách các mục. os. hằng sốpathep [một biến có một giá trị xác định, không thể thay đổi] xác định dấu tách đường dẫn cho nền tảng hiện tại để bạn có thể sử dụng cùng một mã trên bất kỳ nền tảng nào hỗ trợ Python.

    Bạn cũng có thể thêm và xóa các mục khỏi sys. đường dẫnVí dụ, nếu bạn muốn thêm thư mục làm việc hiện tại vào danh sách các gói, bạn gõ sys. con đường. nối thêm [os. getcwd[]] và nhấn Enter

    Khi bạn liệt kê các hệ thống. nội dung đường dẫn một lần nữa, bạn sẽ thấy rằng mục mới được thêm vào cuối danh sách. Tương tự như vậy, khi bạn muốn xóa một mục, bạn gõ sys. con đường. loại bỏ [os. getcwd[]] và nhấn Enter. Việc bổ sung chỉ hiện diện trong phiên hiện tại

    Một trong những phiền toái nhỏ của lập trình là Microsoft Windows sử dụng ký tự dấu gạch chéo ngược giữa các tên thư mục trong khi hầu hết các máy tính khác sử dụng dấu gạch chéo lên

    Đây là một tai nạn của lịch sử máy tính đầu năm 1980. Phiên bản đầu tiên của MS-DOS đã sử dụng ký tự gạch chéo về phía trước để chỉ định các tùy chọn dòng lệnh. Khi Microsoft thêm hỗ trợ cho các thư mục trong MS-DOS 2. 0, ký tự gạch chéo lên đã được sử dụng nên họ đã sử dụng dấu gạch chéo ngược để thay thế. Ba mươi lăm năm sau, chúng ta vẫn mắc kẹt với sự không tương thích này

    Nếu bạn muốn mã Python của mình hoạt động trên cả Windows và Mac/Linux, bạn sẽ cần xử lý các loại vấn đề cụ thể của nền tảng này. May mắn thay, Python 3 có một mô-đun mới gọi là pathlib giúp làm việc với các tệp gần như không gây khó khăn

    Hãy xem nhanh các cách khác nhau để xử lý đường dẫn tên tệp và xem cách pathlib có thể giúp cuộc sống của bạn tốt hơn

    Giải pháp sai. Xây dựng đường dẫn tệp bằng tay

    Giả sử bạn có một thư mục dữ liệu chứa tệp mà bạn muốn mở trong chương trình Python của mình

    Đây là cách sai để viết mã bằng Python

    Lưu ý rằng tôi đã mã hóa cứng đường dẫn bằng cách sử dụng dấu gạch chéo lên kiểu Unix vì tôi đang sử dụng máy Mac. Điều này sẽ khiến người dùng Windows tức giận

    Về mặt kỹ thuật, mã này sẽ vẫn hoạt động trên Windows vì Python có một bản hack trong đó nó sẽ nhận ra một trong hai loại dấu gạch chéo khi bạn gọi open[] trên Windows. Nhưng ngay cả khi vẫn vậy, bạn không nên phụ thuộc vào điều đó. Không phải tất cả các thư viện Python đều hoạt động nếu bạn sử dụng sai loại dấu gạch chéo trên hệ điều hành sai — đặc biệt nếu chúng giao tiếp với các chương trình hoặc thư viện bên ngoài

    Và sự hỗ trợ của Python để trộn các loại dấu gạch chéo là một bản hack chỉ dành cho Windows không hoạt động ngược lại. Sử dụng dấu gạch chéo ngược trong mã sẽ hoàn toàn thất bại trên máy Mac

    Vì tất cả những lý do này và hơn thế nữa, viết mã với các chuỗi đường dẫn được mã hóa cứng là thứ sẽ khiến các lập trình viên khác nhìn bạn với sự nghi ngờ lớn. Nói chung, bạn nên cố gắng tránh nó

    Giải pháp cũ. hệ điều hành của Python. mô-đun đường dẫn

    hệ điều hành của Python. mô-đun đường dẫn có rất nhiều công cụ để khắc phục các loại sự cố hệ thống tệp dành riêng cho hệ điều hành này

    Bạn có thể sử dụng hệ điều hành. con đường. join[] để tạo chuỗi đường dẫn bằng cách sử dụng đúng loại dấu gạch chéo cho hệ điều hành hiện tại

    Mã này sẽ hoạt động hoàn hảo trên cả Windows hoặc Mac. Vấn đề là nó rất khó sử dụng. Viết ra os. con đường. join[] và chuyển từng phần của đường dẫn dưới dạng một chuỗi riêng biệt dài dòng và không trực quan

    Vì hầu hết các chức năng trong hệ điều hành. mô-đun đường dẫn cũng khó sử dụng tương tự, các nhà phát triển thường “quên” sử dụng chúng ngay cả khi họ biết rõ hơn. Điều này dẫn đến rất nhiều lỗi đa nền tảng và người dùng tức giận

    Giải pháp tốt hơn. Pathlib của Python 3

    Trăn 3. 4 đã giới thiệu một thư viện tiêu chuẩn mới để xử lý các tệp và đường dẫn có tên là pathlib — và thật tuyệt

    Để sử dụng nó, bạn chỉ cần chuyển một đường dẫn hoặc tên tệp vào một đối tượng Path[] mới bằng cách sử dụng dấu gạch chéo lên và nó sẽ xử lý phần còn lại

    Lưu ý hai điều ở đây

    1. Bạn nên sử dụng dấu gạch chéo về phía trước với các hàm pathlib. Đối tượng Path[] sẽ chuyển đổi các dấu gạch chéo về phía trước thành loại dấu gạch chéo chính xác cho hệ điều hành hiện tại. Tốt đẹp
    2. Nếu bạn muốn thêm vào đường dẫn, bạn có thể sử dụng toán tử / trực tiếp trong mã của mình. Nói lời tạm biệt với việc gõ os. con đường. tham gia [a, b] lặp đi lặp lại

    Và nếu đó là tất cả những gì mà pathlib đã làm, thì nó sẽ là một bổ sung tuyệt vời cho Python — nhưng nó còn làm được nhiều hơn thế

    Ví dụ: chúng ta có thể đọc nội dung của tệp văn bản mà không cần phải thao tác mở và đóng tệp

    tiền boa. Các ví dụ trước bị lỗi vì tệp đã mở không bao giờ được đóng. Cú pháp này tránh hoàn toàn lỗi đó

    Trên thực tế, pathlib làm cho hầu hết các thao tác với tệp tiêu chuẩn trở nên nhanh chóng và dễ dàng

    Bạn thậm chí có thể sử dụng pathlib để chuyển đổi rõ ràng đường dẫn Unix thành đường dẫn có định dạng Windows

    Và nếu bạn THỰC SỰ muốn sử dụng dấu gạch chéo ngược trong mã của mình một cách an toàn, bạn có thể khai báo đường dẫn của mình theo định dạng Windows và pathlib có thể chuyển đổi nó để hoạt động trên hệ điều hành hiện tại

    Nếu muốn thú vị, bạn thậm chí có thể sử dụng pathlib để thực hiện những việc như giải quyết đường dẫn tệp tương đối, phân tích đường dẫn chia sẻ mạng và tạo tệp. // url. Đây là một ví dụ sẽ mở một tệp cục bộ trong trình duyệt web của bạn chỉ bằng hai dòng mã

    Đây chỉ là một đỉnh nhỏ tại pathlib. Đó là một sự thay thế tuyệt vời cho nhiều chức năng liên quan đến tệp khác nhau đã từng nằm rải rác xung quanh các mô-đun Python khác nhau. Kiểm tra nó ra

    Cảm ơn vì đã đọc. Nếu bạn quan tâm đến Học máy [hoặc chỉ muốn hiểu nó là gì], hãy xem Học máy rất thú vị của tôi. loạt hoặc đăng ký nhận bản tin của tôi

    Đường dẫn [__ tệp __] trong Python là gì?

    Biến __file__. __file__ là biến chứa đường dẫn đến mô-đun hiện đang được nhập . Python tạo một biến __file__ cho chính nó khi nó chuẩn bị nhập một mô-đun.

    Làm cách nào để đọc đường dẫn tệp trong Python?

    Lấy đường dẫn của tệp hiện tại [tập lệnh] bằng Python. __file__ .
    hệ điều hành. getcwd[] và __file__
    Lấy tên tệp và thư mục của tệp tập lệnh hiện tại
    Nhận đường dẫn tuyệt đối của tệp tập lệnh hiện tại
    Đọc các tệp khác dựa trên vị trí của tệp tập lệnh hiện tại

    Chủ Đề