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!


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.


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)

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.


-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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.