Python, thêm dấu gạch chéo vào chuỗi thư mục, hệ điều hành độc lập


114

Làm cách nào để thêm dấu gạch chéo ( /cho * nix, \cho win32) vào chuỗi thư mục, nếu dấu gạch chéo đuôi chưa có ở đó? Cảm ơn!


8
Bạn nên sử dụng os.pathmô-đun ( docs.python.org/library/os.path.html ) thay vì thao tác trực tiếp các chuỗi. Sử dụng os.path.joinđể nối các thành phần đường dẫn.
kennytm

2
cảm ơn Tim đã nhắc nhở, sau khi đọc tài liệu, tôi nghĩ câu trả lời cho câu hỏi thực sự của tôi là os.path.join (thư mục, tên tệp) và tôi không phải lo lắng về dấu gạch chéo. người đàn ông, tôi sẽ yêu python ;-)
ohho

2
Đó là lý do tại sao tôi đã yêu cầu - đừng tự làm điều này, hãy sử dụng os.path.joinvà để thư viện tiêu chuẩn tìm ra dấu phân cách đường dẫn chính xác.
Tim Pietzcker

2
@ S.Lott Tôi sẽ không coi điều này là 'xấu'. câu hỏi tự nó là một câu hỏi hợp lệ. nó chỉ là một phần của câu hỏi lớn hơn (người ta có thể nói là thật).
ohho

6
Tuy nhiên, tùy thuộc vào những gì bạn đang làm, câu hỏi vẫn có thể được quan tâm. Ví dụ: nếu bạn đang sử dụng Python để cung cấp đầu vào cho một chương trình khác, bạn có thể gặp trường hợp đối số cần một đường dẫn có dấu gạch chéo. Điều đó có thể nằm ngoài tầm kiểm soát của bạn; và là một trường hợp sử dụng hoàn toàn hợp lệ cho câu trả lời của Marco dưới đây.
Chris Krycho 10/12/12

Câu trả lời:


180

os.path.join(path, '') sẽ thêm dấu gạch chéo nếu chưa có.

Bạn có thể làm os.path.join(path, '', '')hoặc os.path.join(path_with_a_trailing_slash, '')và bạn vẫn sẽ chỉ nhận được một dấu gạch chéo.


2
Cũng thêm dấu gạch chéo khi pathtình cờ là tệp chứ không phải thư mục. Điều đó hơi bất tiện.
Martin

27

Vì bạn muốn kết nối thư mục và tên tệp, hãy sử dụng

os.path.join(directory, filename)

Nếu bạn muốn loại bỏ các .\..\..\blah\đường dẫn, hãy sử dụng

os.path.join(os.path.normpath(directory), filename)

11

Bạn có thể làm điều đó theo cách thủ công bằng cách:

path = ...

import os
if not path.endswith(os.path.sep):
    path += os.path.sep

Tuy nhiên, nó thường sạch hơn nhiều khi sử dụng os.path.join.


-1

Bạn có thể sử dụng một cái gì đó như thế này:

os.path.normcase(path)
    Normalize the case of a pathname. On Unix and Mac OS X, this returns the path unchanged; on case-insensitive filesystems, it converts the path to lowercase. On Windows, it also converts forward slashes to backward slashes.

Khác mà bạn có thể tìm kiếm một cái gì đó khác trên này trang

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.