Làm cách nào để có được dấu phân tách biến môi trường PATH trong Python?


156

Khi nhiều thư mục cần được nối, như trong một đường dẫn tìm kiếm thực thi, có một ký tự phân tách phụ thuộc os. Đối với Windows ';', Linux cũng vậy ':'. Có cách nào trong Python để tách nhân vật nào không?

Trong các cuộc thảo luận cho câu hỏi này, làm cách nào để tìm ra đường dẫn trăn của tôi bằng python? , nó được đề nghị os.sepsẽ làm điều đó. Câu trả lời đó là sai, vì nó là dấu phân cách cho các thành phần của một thư mục hoặc tên tệp và tương đương với '\\'hoặc '/'.

Câu trả lời:


220

219
Nếu, giống như tôi, bạn đã không đọc phần chính của câu hỏi này và chỉ đi theo tiêu đề, bạn sẽ nghĩ đây là nhân vật phân tách các yếu tố của đường dẫn hệ thống tệp (dấu gạch chéo trên Linux và MacOSX, dấu gạch chéo ngược trên Windows). Không phải, đó là ký tự phân tách các phần tử của PATH shell được sử dụng để định vị các lệnh thực thi. os.sephoặc os.path.seplà những gì bạn cần cho đường dẫn hệ thống tập tin.
Perry

71
os.pathsep:hay ;khi os.path.sep\\ hay /- đôi khi những cái tên bằng Python tấn công tôi như đáng kinh ngạc kém chọn. Điều đó .làm cho cách quá lớn của một sự khác biệt.
ArtOfWarfare

1
@Perry tôi đã chỉnh sửa câu hỏi. hy vọng bản chỉnh sửa của tôi sẽ xóa được sự nhầm lẫn (tôi đã chỉ ra rằng câu hỏi này đang hỏi về "biến môi trường PATH" thay vì "đường dẫn hệ thống tập tin").
Trevor Boyd Smith

Vì vậy, có os.sepos.path.sep, bằng nhau, cũng như os.pathsepos.path.pathsepcũng bằng nhau. Tại sao họ làm điều đó?
BallpointBen


12

Làm cho nó rõ ràng hơn một chút (Đối với những người mới chơi python như tôi)

import os
print(os.pathsep)

4

OK, vậy là có:

  • os.pathsepđó là ;và là một dấu phân cách trong PATHbiến môi trường;
  • os.path.sepđó là /trong Unix / Linux và \trong Windows, là một phân tách giữa các thành phần đường dẫn.

Sự giống nhau là một nguồn gây nhầm lẫn.


Bạn thậm chí đã đọc câu hỏi? os.path.seplà câu trả lời cho một câu hỏi khác
Đánh dấu tiền chuộc

Bạn nói đúng, cảm ơn! Sự nhầm lẫn của tôi xuất phát từ thực tế rằng thực sự tôi đang tìm kiếm dấu tách riêng cho hệ thống '\' và '/' (đó là os.path.sep) trong khi trang này được đề xuất là một trong những kết quả tìm kiếm.
DVV

1

Đây là đường dẫn mẫu cho thư mục làm việc / thư mục cụ thể của bạn -

 import os
 my = os.path.sep+ "testImages" + os.path.sep + "imageHidden.png"
 print(my)

Đầu ra cho Linux-

/home/*******/Desktop/folder/PlayWithPy/src/testImages/imageHidden.png

Đầu ra cho Windows-

C:\\Users\\Administrator\\Desktop\\folder\\tests\\testImages\\imageHidden.png

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.