Python, dizin dizesine sondaki eğik çizgi ekleyin, bağımsız olarak işletim sistemi


114

Kuyruk eğik çizgi zaten orada değilse, bir dizin dizesine sondaki eğik çizgiyi ( /* nix \için, win32 için) nasıl ekleyebilirim ? Teşekkürler!


8
Sen kullanmalıdır os.pathmodülünü ( docs.python.org/library/os.path.html yerine doğrudan dizeleri manipüle). os.path.joinYol bileşenlerini birleştirmek için kullanın .
kennytm

2
Tim hatırlattığı için teşekkürler, dokümanı okuduktan sonra, asıl sorumun cevabının os.path.join (klasör, dosya adı) olduğunu ve eğik çizgi hakkında endişelenmeme gerek olmadığını düşünüyorum. dostum, pitonu seveceğim ;-)
ohho

2
Bu yüzden sordum - bunu kendiniz yapmayın, kullanın os.path.joinve standart kitaplığın doğru yol ayırıcıyı bulmasına izin verin.
Tim Pietzcker

2
@ S.Lott Bunu 'kötü' olarak görmeyeceğim. soru kendi başına geçerli bir sorudur. bu sadece daha büyük (gerçek denebilir) bir sorunun bir parçasıdır.
ohho

6
Ne yaptığınıza bağlı olarak, soru yine de ilgi çekici olabilir. Örneğin, Python'u başka bir programa girdi sağlamak için kullanıyorsanız, bir argümanın eğik çizgi ile biten bir yola ihtiyaç duyduğu bir durumunuz olabilir. Bu sizin kontrolünüz dışında olabilir; ve Marco'nun aşağıdaki cevabı için tamamen geçerli bir kullanım örneğidir.
Chris Krycho

Yanıtlar:


180

os.path.join(path, '') Zaten orada değilse sondaki eğik çizgiyi ekler.

Sen yapabilir os.path.join(path, '', '')ya os.path.join(path_with_a_trailing_slash, '')ve hala tek eğik çizgi alacak.


2
Ayrıca pathbir dizin yerine bir dosya olduğunda bir eğik çizgi ekler . Bu biraz rahatsız edici.
Martin

27

Bir dizin ve bir dosya adı bağlamak istediğiniz için, şunu kullanın:

os.path.join(directory, filename)

Yollardan kurtulmak istiyorsanız .\..\..\blah\, şunu kullanın:

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

11

Bunu manuel olarak şu şekilde yapabilirsiniz:

path = ...

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

Ancak, kullanımı genellikle çok daha temizdir os.path.join.


-1

Bunun gibi bir şey kullanabilirsiniz:

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.

Aksi takdirde bu sayfada başka bir şey arayabilirsin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.