Saya telah menulis kode dengan python yang menggunakan / untuk membuat file tertentu di folder, jika saya ingin menggunakan kode di windows tidak akan berfungsi, apakah ada cara di mana saya dapat menggunakan kode di Windows dan Linux.
Dalam python saya menggunakan kode ini:
pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')
Ketika saya akan menggunakan kode saya di mesin windows misalkan kode saya tidak akan berfungsi.
Bagaimana cara menggunakan "/" (pemisah direktori) di Linux dan Windows?
/
di jalur direktori. Apa masalah spesifik yang Anda alami? Posting beberapa kode yang menggambarkan masalah.Jawaban:
Gunakan
os.path.join()
. Contoh:os.path.join(pathfile,"output","log.txt")
.Dalam kode Anda itu adalah:
rootTree.write(os.path.join(pathfile,"output","log.txt"))
sumber
os.path.join
menggunakan logika yang lebih kompleks untuk mencocokkan beberapa komponen jalur relatif bersama. Ketika Anda hanya ingin rantai mereka,os.sep.join
adalah pilihan yang tepat.Menggunakan:
untuk melihat bagaimana pemisah terlihat pada OS saat ini.
Dalam kode Anda, Anda dapat menggunakan:
sumber
Anda dapat menggunakan os.sep :
sumber
os.path.normpath(pathname)
juga harus disebutkan karena mengubah/
pemisah jalur menjadi\
pemisah pada Windows. Ini juga runtuh referensi tingkat tinggi yang berlebihan ... yaitu,A/B
danA/foo/../B
danA/./B
semua menjadiA/B
. Dan jika Anda Windows, ini semua menjadiA\B
.sumber
os.path.normpath('a/b/c/d/file.ext')
daripadaos.path.join('a','b','c','d','file.ext')
ketika saya harus menentukan jalan yang panjang.os.path.join
hanya bergabung dengan apa saja yang disediakan. misalnyajoin("a/b", "c\d")
memberia/b\c\d
(di windows). Tetapi saya bisa mendapatkan hasil yang diharapkan dengan kombinasi yang tepat darijoin
dannormpath
, misalnyaa\b\c\d
(pada windows)Jika Anda cukup beruntung menjalankan Python 3.4+, Anda dapat menggunakan
pathlib
:atau, secara setara,
sumber
Beberapa tautan bermanfaat yang akan membantu Anda:
sumber
sep
tetapi tidak bisa menahan diri untuk memposting ini juga (saya berasumsi OP akan menemukannya berguna untuk pekerjaan di masa depan) :)Lakukan
import os
dan gunakanos.sep
sumber
sumber
Jangan membangun direktori dan nama file diri Anda, gunakan pustaka python termasuk.
Dalam hal ini yang relevan adalah os.path . Terutama bergabung yang membuat nama path baru dari direktori dan nama file atau direktori dan split yang mendapatkan nama file dari path lengkap.
Teladan Anda akan menjadi
sumber