SORU
17 Kasım 2008, PAZARTESİ


Python için geçerli bir dosya adı dönüşmesi bir dize

Dosya adlarında izin verilmez tüm karakterleri kaldırmak istiyorum yani bir dosya adı olarak kullanmak istediğiniz bir dize, Python kullanıyorum.

Yerine başka daha sıkı olurdum, hadi sadece harfler, rakamlar ve "_-.() " gibi diğer karakter küçük bir set korumak istiyorum demek. En zarif çözüm nedir?

Dosya adı olması gerekir geçerli birden çok işletim sistemi (Windows, Linux ve Mac OS) - bir MP3 dosyası benim kütüphane ile şarkı adı olarak dosya adını ve paylaşılan ve yedeklenmiş arasında 3 makine.

CEVAP
17 Kasım 2008, PAZARTESİ


Bu beyaz liste yaklaşım (yani, izin tek karakter mevcut valid_chars) çalışır sorun yoksa sınırları biçimlendirme dosya veya birlikte geçerli karakter olan yasadışı ( " .. "), örneğin, ne derdiniz izin bir dosya isminde " . "ben Windows üzerinde geçerli değil sanırım. txt Bu en basit yaklaşım ederim deneyin kaldırmak boşluk gelen valid_chars ve önüne bir bilinen geçerli dize durumunda hata, başka bir yaklaşım olacak bilmek nedir izin nereye baş Windows file naming limitations ve bu çok daha karmaşık.

>>> import string
>>> valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
>>> valid_chars
'-_.() abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
>>> filename = "This Is a (valid) - filename%$&$ .txt"
>>> ''.join(c for c in filename if c in valid_chars)
'This Is a (valid) - filename .txt'

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fufko

    fufko

    27 ŞUBAT 2006
  • newreleaseblitz

    newreleasebl

    13 Ocak 2010
  • Rachel Talbott

    Rachel Talbo

    26 Ocak 2011