Pertanyaan Apakah os.path.join diperlukan?


Saat ini saya gunakan os.path.join hampir selalu dalam proyek Django saya untuk dukungan lintas OS; satu-satunya tempat di mana saya saat ini tidak menggunakannya adalah untuk nama template dan untuk URL. Jadi dalam situasi di mana saya menginginkan jalannya '/path/to/some/file.ext' saya menggunakan os.path.join('path', 'to', 'some', 'file.ext').

Namun saya hanya menguji proyek saya di windows untuk melihat apakah itu berfungsi dengan baik / diperlukan dan tampaknya windows akan dengan senang hati menerima '/' atau '\\' (atau '\' ketika bekerja di luar python), dan karena semua sistem UNIX semua digunakan '/' sepertinya tidak ada alasan untuk menggunakannya '\\', dalam hal mana perlu untuk digunakan os.path.join kemana saja?

Apakah ada situasi di mana menambahkan '/' atau menggunakan posixpath akan menyebabkan masalah pada sistem operasi tertentu (tidak termasuk XP atau di bawah karena mereka tidak lagi didukung secara resmi)? Jika tidak saya pikir saya hanya akan menggunakan posixpath atau menambahkan '/' untuk menggabungkan variabel dengan variabel atau variabel lain dengan string dan tidak memisahkan jalur string (jadi biarkan sebagai '/path/to/some/file.ext') kecuali ada alasan lain bagi saya untuk tidak melakukan itu selain melanggar hal-hal.

Untuk menghindari hal ini berpotensi ditutup sebagai opini utama, saya ingin mengklarifikasi bahwa pertanyaan spesifik saya adalah apakah tidak menggunakannya os.path.join akan pernah menyebabkan program python tidak berfungsi sebagaimana dimaksud pada sistem operasi yang didukung.


8
2018-06-06 01:16


asal


Jawaban:


Microsoft Windows API tidak peduli apakah Anda menggunakan / atau \, jadi biasanya baik untuk digunakan sebagai pemisah pada Windows. Namun, baris perintah ("kotak DOS" - command.com atau cmd.exe) perintah umumnya membutuhkan \ di jalur (/ digunakan untuk menandai opsi perintah di shell Windows asli ini). Jadi, misalnya, jika Anda membuat baris perintah dengan Python dan mengaktifkan shell untuk mengeksekusi perintah, Anda biasanya harus menggunakan \ pemisah pada Windows.

Satu kasus lain tercakup Lib/macpath.py: disana sep diatur ke : (titik dua), melayani sistem Macintosh yang lebih tua. Saya percaya itulah satu-satunya sistem Python yang pernah berjalan pada yang tidak menerima / sebagai pemisah.

EDIT: Lihat disini untuk akun panjang aturan penamaan Windows. Jangan salahkan saya ;-)


13
2018-06-06 01:34



Jika Anda menampilkan nama file kepada pengguna untuk alasan apa pun, lebih baik jika nama file tersebut mengikuti konvensi OS biasa.

Windows telah dapat menggunakan / untuk pemisah jalur selama ada jalur - ini adalah fitur DOS.


4
2018-06-06 01:21