Ini berfungsi dengan baik:
os.path.join(dir_name, base_filename + "." + filename_suffix)
Perlu diingat bahwa os.path.join()
ada hanya karena sistem operasi yang berbeda menggunakan karakter pemisah jalur yang berbeda. Ini menghaluskan perbedaan itu sehingga kode lintas-platform tidak harus berantakan dengan kasus khusus untuk setiap OS. Tidak perlu melakukan ini untuk nama file "ekstensi" (lihat catatan kaki) karena mereka selalu terhubung ke sisa nama dengan karakter titik, di setiap OS.
Jika tetap menggunakan fungsi membuat Anda merasa lebih baik (dan Anda suka menyulitkan kode Anda), Anda dapat melakukan ini:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
Jika Anda lebih suka menjaga kode Anda tetap bersih, cukup sertakan titik di akhiran:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
(Pendekatan ini juga kompatibel dengan konvensi sufiks di pathlib , yang diperkenalkan dengan python 3.4.)
Catatan Kaki: Tidak ada nama "ekstensi" nama file pada sistem operasi non-Micorsoft. Kehadirannya di Windows berasal dari MS-DOS dan FAT, yang meminjamnya dari CP / M, yang telah mati selama beberapa dekade. Dot-plus-tiga-huruf yang biasa kita lihat hanyalah bagian dari nama file di setiap OS modern lainnya, yang tidak memiliki makna bawaan.
.
. Untuk yang satu ini bisa digunakanos.extsep
.os.path.join(dir_name, base_filename, os.extsep, extension)
. Jawaban Anda benar sekali.+
antara bagian nama file.os.path.join()
menambahkan pemisah jalur khusus OS (/
misalnya) antara argumen (seperti @ sәɹoɈ sudah benar dalam jawabannya. Dengan demikian bentuk potongan kode Anda yang benar adalah:os.path.join(dir_name, base_filename + os.extsep + extension)
Jika Anda cukup beruntung menjalankan Python 3.4+, Anda dapat menggunakan
pathlib
:sumber
with_suffix()
akan menggantikannya daripada menambahkan. Anda menginginkan sesuatu sepertiPath(dirname, filename2 + suffix)
Um, mengapa tidak adil:
sumber
Cukup gunakan
os.path.join
untuk bergabung dengan jalur Anda dengan nama file dan ekstensi. Gunakansys.argv
untuk mengakses argumen yang diteruskan ke skrip saat menjalankannya:Cukup jalankan skrip seperti:
sumber