Python, tambahkan garis miring ke string direktori, os secara independen

114

Bagaimana cara menambahkan garis miring ( /untuk * nix, \untuk win32) ke string direktori, jika garis miring tailing belum ada? Terima kasih!

ohho
sumber
8
Anda harus menggunakan os.pathmodul ( docs.python.org/library/os.path.html ) daripada memanipulasi string secara langsung. Gunakan os.path.joinuntuk menggabungkan komponen jalur.
kennytm
2
terima kasih Tim untuk mengingatkan, setelah membaca dokumen, saya pikir jawaban untuk pertanyaan saya yang sebenarnya adalah os.path.join (folder, nama file) dan saya tidak perlu khawatir tentang garis miring sama sekali.
Sobat
2
Itu sebabnya saya bertanya - jangan lakukan ini sendiri, gunakan os.path.joindan biarkan perpustakaan standar mencari tahu pemisah jalur yang benar.
Tim Pietzcker
2
@ S. Lott Saya tidak akan menganggap ini 'buruk'. pertanyaannya adalah pertanyaan yang valid dengan sendirinya. itu hanya sebagian dari pertanyaan yang lebih besar (bisa dikatakan nyata).
ohho
6
Bergantung pada apa yang Anda lakukan, bagaimanapun, pertanyaan itu mungkin masih menarik. Misalnya, jika Anda menggunakan Python untuk memberikan input ke program lain, Anda mungkin memiliki kasus di mana argumen memerlukan jalur yang diakhiri dengan garis miring. Itu mungkin di luar kendali Anda; dan merupakan kasus penggunaan yang benar-benar valid untuk jawaban Marco di bawah.
Chris Krycho

Jawaban:

180

os.path.join(path, '') akan menambahkan garis miring jika belum ada.

Anda dapat melakukan os.path.join(path, '', '')atau os.path.join(path_with_a_trailing_slash, '')dan Anda masih hanya akan mendapatkan satu garis miring.

Steven T. Snyder
sumber
2
Juga menambahkan garis miring ketika pathkebetulan menjadi file daripada direktori. Itu sedikit merepotkan.
Martin
27

Karena Anda ingin menghubungkan direktori dan nama file, gunakan

os.path.join(directory, filename)

Jika Anda ingin menyingkirkan .\..\..\blah\jalan, gunakan

os.path.join(os.path.normpath(directory), filename)
Tim Pietzcker
sumber
11

Anda dapat melakukannya secara manual dengan:

path = ...

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

Namun, biasanya jauh lebih bersih untuk digunakan os.path.join.

Max Shawabkeh
sumber
-1

Anda bisa menggunakan sesuatu seperti ini:

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.

Jika tidak, Anda dapat mencari yang lain di halaman ini

Bloeper
sumber