2011-09-25 17 views
6

तो मैं जो करने की कोशिश कर रहा हूं वह एमपी 3 फ़ाइलों के कुछ id3tags को ठीक करता है। यह सभी काम करता है, किसी भी तरह के उच्चारण के साथ फाइलों को छोड़कर, क्योंकि os.walk उन्हें पट्टी लग रहा है।os.walk() स्ट्रिप पॉलिश अक्षर

for root, dirs, files in os.walk(folder): 
    print files 

['01.Co Slychac.mp3'] के रूप में दिखाता है बाद में एक 'ऐसा कोई फ़ाइल या निर्देशिका' त्रुटि में परिणाम,:

उदाहरण के लिए, मैं फ़ाइल 01.Co Słychać.mp3 है, जो इस कोड में है।

यह कैसे तय किया जा सकता है?

+0

कौन सा पायथन (संस्करण संख्या और स्रोत), और यह यूनिकोड संस्करण है? –

उत्तर

7

क्या आपने folder को यूनिकोड स्ट्रिंग के रूप में परिभाषित किया था? इस पर प्रभाव पड़ता है कि कैसे os.walk() अपनी उपनिर्देशिका, या बेहतर, स्ट्रिंग के प्रकार से मेल खाता है।

>>> for a,b,c in os.walk("."): 
... print b 
... break 
... 
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'tcl', 'Tools'] 
>>> for a,b,c in os.walk(u"."): 
... print b 
... break 
... 
[u'DLLs', u'Doc', u'include', u'Lib', u'libs', u'tcl', u'Tools'] 
+0

मेरी समस्या हल हो गई। – Robus

+1

ग्रेट। मुझे आश्चर्य है कि क्यों [प्रलेखन] (http://docs.python.org/library/os.html#os.walk) इसका उल्लेख नहीं करता है। –

+1

आह, मैं देखता हूं। 'os.walk()' os.listdir() ', और [यहां] (http://docs.python.org/library/os.html#os.listdir) का उपयोग करता है दस्तावेज़ इस व्यवहार को समझाते हैं:" विंडोज़ पर एनटी/2 के/एक्सपी और यूनिक्स, यदि 'पथ' एक यूनिकोड ऑब्जेक्ट है, तो परिणाम यूनिकोड ऑब्जेक्ट्स की एक सूची होगी। अनावश्यक फ़ाइल नाम अभी भी स्ट्रिंग ऑब्जेक्ट्स के रूप में वापस आ जाएंगे। " –

संबंधित मुद्दे