2010-04-29 21 views
59

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 không có sẵn? Cảm ơn!Python, thêm dấu gạch chéo vào chuỗi thư mục, os độc lập

+0

Bạn muốn làm gì với ứng dụng này? –

+5

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

+0

@Tim Pietzcker, vì vậy tôi có thể chắc chắn có dấu gạch chéo khi tôi concat chuỗi thư mục với tên tệp – ohho

Trả lời

91

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

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

7

Bạn có thể làm nó bằng tay bằng cách:

path = ... 

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

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

+0

+1 cho 'os.path.join' –

43
os.path.normpath(mypath) + os.sep 
+0

Cảm ơn! rõ ràng và súc tích – dopplesoldner

+9

điều này không thành công nếu đường dẫn ban đầu là gốc, '\' – mingxiao

-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 bạn có thể tìm kiếm một cái gì đó khác trên this trang

22

Vì bạn muốn kết nối một thư mục và một tên tập tin, sử dụng

os.path.join(directory, filename) 

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

os.path.join(os.path.normpath(directory), filename) 
Các vấn đề liên quan