Hướng dẫn save path as variable python - lưu đường dẫn dưới dạng python biến

Từ thông báo lỗi, rõ ràng chuỗi được lưu trữ ở định dạng chính xác (dấu gạch chéo ngược được thoát ra bằng cách nhân đôi). Vì vậy, có vẻ như đường dẫn là sai, và tập tin thực sự không có.

Mặt khác, trong ví dụ thứ hai của bạn mà bạn đã thêm vào Chỉnh sửa của mình, bạn sử dụng

>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
8 - Điều này chắc chắn sẽ thất bại vì
>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
9 là một ký tự tab (trong khi tất cả các kết hợp chữ lùi khác không tồn tại, vì vậy dấu gạch chéo ngược sẽ được xử lý Giống như nó đã thoát ra một cách chính xác). Nhưng bạn nói rằng chuỗi được lưu trữ trong một biến, vì vậy tôi không thấy ví dụ này giúp làm thế nào ở đây.

Xem xét những điều sau:

>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\test5.txt'

Nhìn thấy? Tất cả các dấu gạch chéo ngược được chuyển đổi thành các dấu gạch chéo thoát khỏi

>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
9 vì đó là cái duy nhất có ý nghĩa đặc biệt. Và bây giờ, tất nhiên, con đường này là sai. Vì vậy, nếu các biến mà bạn đề cập đã được xác định theo cách này (và bây giờ chứa các đường dẫn không hợp lệ), bạn không thể làm gì ngoại trừ sửa chữa nguồn:

>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'

Bạn có thể nghĩ rằng bạn có thể "sửa" một đường dẫn bị lỗi sau đó như thế này:

>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path.replace("\t","\\t")
'c:\\example2\\media\\uploads\\test5.txt'

... Nhưng có nhiều mã thoát khác (

>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path.replace("\t","\\t")
'c:\\example2\\media\\uploads\\test5.txt'
1,
>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path.replace("\t","\\t")
'c:\\example2\\media\\uploads\\test5.txt'
2,
>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path.replace("\t","\\t")
'c:\\example2\\media\\uploads\\test5.txt'
3, v.v.), vì vậy đó không thực sự là một cách khả thi, đặc biệt là vì bạn sẽ tiến hành các triệu chứng thay vì khắc phục vấn đề tiềm ẩn.

Đội câu trả lời giáo dục

Biến đường dẫn

Biến đường dẫn là một danh sách các thư mục trong đó mỗi thư mục chứa tệp thực thi cho một lệnh.PATH variable is a list of directories where each directory contains the executable file for a command.

Khi một lệnh được nhập vào dấu nhắc lệnh windows, lời nhắc tìm kiếm trong biến đường dẫn cho một tệp thực thi có cùng tên với lệnh; Tôi không tìm thấy trường hợp tệp cần thiết, nó trả lời với thông báo lỗi nói rằng lệnh được chỉ định không được nhận ra.

Một cách để khắc phục lỗi này là viết thư mục hoàn chỉnh của tệp thực thi thay vì chỉ nhập tên lệnh. Tuy nhiên, đây không phải là một cách tiếp cận rất thân thiện với người dùng.

Một cách khác có thể và dễ dàng hơn để tránh lỗi này là thêm thư mục tệp thực thi vào biến đường dẫn. Thông thường, điều này cần phải được thực hiện khi cài đặt Python.

Đường dẫn hoàn chỉnh của

>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path.replace("\t","\\t")
'c:\\example2\\media\\uploads\\test5.txt'
4 có thể được thêm vào bởi:
>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path.replace("\t","\\t")
'c:\\example2\\media\\uploads\\test5.txt'
4
can be added by:

  1. Nhấp chuột phải vào PC này và đi đến thuộc tính.

  2. Nhấp vào cài đặt hệ thống nâng cao trong menu bên trái.

  3. Nhấp vào nút biến môi trường o n phía dưới bên phải.

  4. Trong phần Biến hệ thống, chọn biến đường dẫn và nhấp vào Chỉnh sửa. Màn hình tiếp theo sẽ hiển thị tất cả các thư mục hiện là một phần của biến đường dẫn.

  5. Nhấp vào thư mục cài đặt mới và nhập Python.

Python bây giờ có thể được sử dụng trực tiếp từ dấu nhắc lệnh mà không phải viết vị trí của nó. Thử thực thi lệnh

>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path.replace("\t","\\t")
'c:\\example2\\media\\uploads\\test5.txt'
5; Nó sẽ xuất ra phiên bản Python được cài đặt trên hệ thống của bạn.

Thông thường bạn có thể tìm thấy nhị phân được cài đặt Python ở vị trí đường dẫn này:

>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path.replace("\t","\\t")
'c:\\example2\\media\\uploads\\test5.txt'
6

THẺ LIÊN QUAN

Python

các cửa sổ

đường dẫn

Biến đổi

thực thi

Vấn đề: Liệt kê các thư mục và ổ đĩa

Gần đây trong khi làm việc trong một dự án, một đồng nghiệp đã hỏi liệu người ta có thể liệt kê nội dung của các ổ đĩa trong Python hay không. Tất nhiên bạn có thể. Hơn nữa, vì đây hoàn toàn là phức tạp, nên tôi đã muốn đưa ra trường hợp này để minh họa các thực tiễn tốt nhất được đề xuất để làm việc với các đường dẫn trên các ổ đĩa.

Bước 1: Làm thế nào để tôi nhập đúng đường dẫn?

Giả sử rằng bạn muốn có được danh sách một đường dẫn cụ thể một cách chính xác, chúng tôi bắt đầu bằng cách chọn thư mục người dùng trên hệ thống Windows 10, về cơ bản là một ví dụ có thể tái tạo:

path_dir: str = "C:\Users\sselt\Documents\blog_demo"

Các biến được gán khi thực hiện ngay lập tức gây ra lỗi:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

Trình thông dịch không hiểu trình tự ký tự \ u, vì điều này bắt đầu các ký tự Unicode của một chuỗi tương tự. Vấn đề này phát sinh do hệ thống Windows sử dụng dấu gạch chéo ngược \ \ làm một dấu phân cách đường dẫn và Linux sử dụng dấu gạch chéo/. Thật không may, vì dấu phân cách Windows cũng là người khởi xướng cho các nhân vật đặc biệt khác nhau hoặc Escape in Unicode, nên rõ ràng nó gây nhầm lẫn mọi thứ. Giống như chúng tôi không mong đợi bất kỳ sự gắn kết nào sớm trong việc sử dụng các dấu phân cách thập phân ở nhiều quốc gia khác nhau, lựa chọn duy nhất của chúng tôi là đi cho một trong ba giải pháp.

Giải pháp 1 - Biến thể gớm ghiếc

Chỉ cần tránh phân tách Windows và thay vào đó chỉ viết đường dẫn bằng cách sử dụng Linux DECEATORS:

path_dir: str = "C:/Users/sselt/Documents/blog_demo"

Trình thông dịch sau đó nhận ra đường dẫn chính xác, tin rằng nó là một hệ thống Linux để bắt đầu.

Giải pháp 2 - Biến thể thậm chí còn gớm ghiếc hơn

Sử dụng trình tự thoát.

path_dir: str = "C:\\Users\sselt\Documents\\blog_demo"

Điều làm phiền tôi bên cạnh sự bất hợp pháp của điều này là người ta không sử dụng trình tự thoát ở mọi sự kết hợp của người tập hợp nhân vật, chỉ trước khi U U và và Bu Biêu.

Giải pháp 3 - Một cái thanh lịch

Sử dụng các chuỗi RAW với các loại R R R như một tiền tố để chỉ ra rằng các ký tự đặc biệt không nên được đánh giá.

path_dir: str = r"C:\Users\sselt\Documents\blog_demo"

Bước 2: Quét các tệp

Quay lại nhiệm vụ của chúng tôi muốn liệt kê tất cả các yếu tố trong một thư mục. Chúng tôi đã biết con đường.

Lệnh đơn giản OS.ListDir liệt kê tất cả các chuỗi, tức là, chỉ có tên tệp đường dẫn. Ở đây và trong tất cả các ví dụ khác, tôi sử dụng loại gợi ý cho tài liệu mã bổ sung. Cú pháp này có sẵn từ Python 3.5 trở đi.

import os

from typing import List

path_dir: str = r"C:\Users\sselt\Documents\blog_demo"

content_dir: List[str] = os.listdir(path_dir)

Tệp là ổn, nhưng tôi quan tâm nhiều hơn đến số liệu thống kê tệp, mà chúng tôi có OS.stat.

Bước 3: Đường dẫn catenating

Để chuyển đường dẫn tệp, trước tiên chúng ta phải kết hợp tên tệp và đường dẫn. Tôi thường thấy các cấu trúc sau đây trong tự nhiên, và thậm chí sử dụng chúng khi bắt đầu. Ví dụ:

path_file: str = path_dir + "/" + filename                         
path_file: str = path_dir + "\\" + filename                         
path_file: str = "{}/{}".format(path_dir, filename)                         
path_file: str = f"{path_dir}/{filename}"

A và B là gớm ghiếc, bởi vì chúng catenate các chuỗi với dấu hiệu++ - không cần thiết trong Python.

B đặc biệt gớm ghiếc, bởi vì người ta cần một thiết bị phân tách kép trong Windows hoặc nó sẽ được đánh giá là một chuỗi thoát cho dấu ngoặc kép đóng. & NBSP;

C và D có phần tốt hơn, vì họ sử dụng định dạng chuỗi, nhưng chúng vẫn không giải quyết được vấn đề phụ thuộc vào hệ thống. Nếu tôi áp dụng kết quả trong Windows, tôi sẽ nhận được một đường dẫn chức năng, nhưng không nhất quán với hỗn hợp các dấu phân cách.

>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
0

Một giải pháp độc lập với hệ điều hành

Một giải pháp từ Python là OS.SEP hoặc OS.Path.Sep. Cả hai trả về bộ tách đường dẫn của hệ thống tương ứng. Chúng có chức năng giống hệt nhau, nhưng cú pháp thứ hai, rõ ràng hơn ngay lập tức cho thấy dấu phân cách liên quan.

Điều này có nghĩa là, người ta có thể viết:

>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
1

Kết quả là tốt hơn, nhưng với chi phí của một mã phức tạp, nếu bạn kết hợp một số phân đoạn đường dẫn.

Do đó, quy ước là kết hợp các yếu tố đường dẫn thông qua quá trình caten chuỗi. Điều này thậm chí còn ngắn hơn và chung chung hơn:

>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
2

Chạy đầy đủ đầu tiên

Hãy cùng đi đến thư mục:

>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
3
>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
4

Một trong những kết quả (không được hiển thị) là st_atime, lần cuối cùng được truy cập, st_mtime cho sửa đổi cuối cùng và st_ctime cho thời gian tạo. Ngoài ra, st_size cung cấp kích thước tệp trong byte. Hiện tại, tất cả những gì tôi muốn biết là kích thước và ngày sửa đổi cuối cùng, và vì vậy tôi chọn lưu một định dạng danh sách đơn giản.

>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
5

Chức năng cuối cùng với đệ quy

Kết quả kết quả có vẻ thỏa đáng lúc đầu, nhưng hai vấn đề mới phát sinh. ListDir không phân biệt giữa các tệp và thư mục, chỉ địa chỉ cấp thư mục và không xử lý các thư mục con. Do đó, chúng ta cần một hàm đệ quy phân biệt giữa các tệp và thư mục. os.path.isdir kiểm tra cho chúng tôi xem có thư mục bên dưới đường dẫn hay không.

>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
6

Làm cho kết quả hữu ích như một khung dữ liệu

Xong! Chúng tôi đã giải quyết vấn đề trong ít hơn 10 dòng. Vì tôi đã lên kế hoạch để FileSurvey làm danh sách các bộ dữ liệu, tôi có thể dễ dàng chuyển kết quả vào khung dữ liệu Panda và phân tích nó ở đó để tính tổng số được lưu trong các thư mục, v.v.

>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
7

... nhưng thật không may, nó không phải là cách thực hành tốt nhất

Tôi biết, blog hứa hẹn sẽ giải quyết vấn đề bằng cách sử dụng các thực tiễn tốt nhất.

Một vài năm trước, blog của tôi sẽ kiếm được một số danh tiếng, nhưng mặc dù Python vẫn được phát triển, nhưng nó có thể cải thiện ngay cả những trường hợp sử dụng đơn giản như vậy.

Trong phần tiếp theo, tôi sẽ giải quyết lại trường hợp sử dụng này và giải quyết nó một cách thanh lịch.

Đọc ở đây phần thứ hai của bài viết trên blog.

Làm thế nào để bạn đưa ra một đường dẫn đến một biến trong Python?

Nhấp chuột phải vào máy tính của tôi và nhấp vào các thuộc tính ..
Nhấp vào cài đặt hệ thống nâng cao ..
Nhấp vào tab biến môi trường ..
Nhấp vào tab mới của các biến người dùng ..
Viết đường dẫn trong tên biến ..
Sao chép đường dẫn của thư mục Python ..
PASTE PATH của python trong giá trị biến. Nhấp vào nút OK: Nhấp vào nút OK:.

Biến đường dẫn trong Python là gì?

Nói một cách đơn giản, nó được sử dụng bởi các mô-đun do người dùng xác định để đặt đường dẫn để chúng có thể được nhập trực tiếp vào chương trình Python. Nó cũng xử lý đường dẫn tìm kiếm mặc định cho các mô -đun trong Python. Biến PythonPath bao gồm các thư mục khác nhau như một chuỗi được thêm vào SYS. Danh sách thư mục đường dẫn.used by user-defined modules to set the path so that they can be directly imported into a Python program. It also handles the default search path for modules in Python. PYTHONPATH variable includes various directories as a string to be added to the sys. path directory list.

Làm thế nào để bạn vượt qua một con đường như một cuộc tranh luận trong Python?

Để 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 đường dẫn mới () bằng cách sử dụng dấu gạch chéo về phía trước và nó xử lý phần còn lại: Lưu ý hai điều ở đây: 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 đường dẫn () sẽ chuyển đổi các dấu gạch chéo về phía trước thành đúng loại chém cho hệ điều hành hiện tại.pass a path or filename into a new Path() object using forward slashes and it handles the rest: Notice two things here: You should use forward slashes with pathlib functions. The Path() object will convert forward slashes into the correct kind of slash for the current operating system.

Làm thế nào để bạn giải quyết một con đường trong Python?

Đặt đường dẫn tệp trong Python..
Sử dụng \ ký tự để chỉ định đường dẫn tệp trong Python ..
Sử dụng các chuỗi chữ RAW để chỉ định đường dẫn tệp trong Python ..
Sử dụng hàm OS.Path () để chỉ định đường dẫn tệp trong Python ..
Sử dụng hàm pathlib.path () để chỉ định đường dẫn tệp trong Python ..