Di mana saya dapat menemukan daftar karakter yang diperbolehkan dalam nama file, bergantung pada sistem operasinya? (mis. di Linux, karakter :
diperbolehkan dalam nama file, tetapi tidak di Windows)
special-characters
filenames
python bung
sumber
sumber
Jawaban:
Anda harus mulai dengan halaman Nama File Wikipedia . Ini memiliki tabel berukuran layak ( Perbandingan batasan nama file ), mencantumkan karakter yang dicadangkan untuk cukup banyak sistem file.
Ia juga memiliki sejumlah besar informasi lain tentang setiap sistem file, termasuk nama file yang dicadangkan seperti di
CON
bawah MS-DOS. Saya menyebutkan itu hanya karena saya pernah digigit oleh itu ketika saya mempersingkat file include dariconst.h
menjadicon.h
dan menghabiskan setengah jam untuk mencari tahu mengapa kompiler hang.Ternyata DOS mengabaikan ekstensi untuk perangkat sehingga
con.h
persis sama dengancon
, konsol input (artinya, tentu saja, kompilator menunggu saya untuk mengetikkan file header sebelum melanjutkan).sumber
POSIX "Fully portable filenames"
entri, yang mencantumkan ini:A–Z a–z 0–9 . _ -
Oke, jadi lihat Perbandingan sistem file jika Anda hanya peduli tentang sistem file pemain utama:
NUL
,\
,/
,:
,*
,"
,<
,>
,|
. Juga, tidak ada karakter spasi di awal atau akhir, dan tidak ada titik di akhir .:
atau/
NUL
atau/
sehingga setiap byte kecuali
NUL
,\
,/
,:
,*
,"
,<
,>
,|
dan Anda tidak dapat memiliki file / folder menelepon.
atau..
dan tidak ada karakter kontrol (tentu saja).sumber
/
. Windows tidak mengizinkan garis miring terbalik dan beberapa string (misalnyaCON
).:
s dalam namanya.Pada OS Windows buat file dan berikan karakter yang tidak valid seperti
\
pada nama file. Akibatnya Anda akan mendapatkan popup dengan semua karakter yang tidak valid dalam nama file.sumber
Lebih tepatnya tentang Mac OS X (sekarang disebut MacOS)
/
di Finder diinterpretasikan ke:
dalam sistem file Unix.Ini dilakukan untuk kompatibilitas mundur saat Apple pindah dari Classic Mac OS.
Adalah sah untuk menggunakan
/
dalam nama file di Finder, melihat file yang sama di terminal itu akan muncul dengan:
.Dan cara kerjanya juga sebaliknya: Anda tidak dapat menggunakan a
/
di nama file dengan terminal, tetapi a:
tidak masalah dan akan muncul sebagai a/
di Finder.Beberapa aplikasi mungkin lebih membatasi dan melarang kedua karakter untuk menghindari kebingungan atau karena mereka menyimpan logika dari Mac OS Klasik sebelumnya atau untuk kompatibilitas nama antar platform.
sumber
Untuk nama file "bahasa Inggris", ini berfungsi dengan baik. Saya menggunakan ini untuk membersihkan nama file yang diunggah. Nama file tidak dimaksudkan untuk ditautkan ke apa pun di disk, itu untuk saat file sedang diunduh maka tidak ada pemeriksaan jalur.
Pada dasarnya ini menghapus semua karakter yang tidak dapat dicetak dan dicadangkan untuk Windows dan OS lainnya. Anda dapat
dengan mudahmemperluas pola untuk mendukung lokal dan fungsi lain.sumber
Berikut adalah kode untuk membersihkan nama file di python.
sumber
:return: a valid name for Win/Mac/Linux
tidak benar dalam semua keadaan.