मुझे लगता है कि आप यूनिक्स में हैं। यदि नहीं, तो कृपया यह कहना याद रखें कि आप किस ओएस में हैं।
सुनिश्चित करें कि आपका लोकेल यूटीएफ -8 पर सेट है। सभी आधुनिक लिनक्स सिस्टम डिफ़ॉल्ट रूप से ऐसा करते हैं, आमतौर पर पर्यावरण परिवर्तनीय LANG को "en_US.UTF-8" या किसी अन्य भाषा में सेट करके। साथ ही, सुनिश्चित करें कि आपके फ़ाइल नाम यूटीएफ -8 में एन्कोड किए गए हैं।
उस सेट के साथ, किसी भी भाषा में फ़ाइलों तक पहुंचने के लिए एन्कोडिंग के साथ गड़बड़ करने की आवश्यकता नहीं है, यहां तक कि पायथन 2.x में भी।
[~/test] echo $LANG
en_US.UTF-8
[~/test] echo testing > 漢字
[~/test] python2.6
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.stat("漢字")
posix.stat_result(st_mode=33188, st_ino=548583333L, st_dev=2049L, st_nlink=1, st_uid=1000, st_gid=1000, st_size=8L, st_atime=1263634240, st_mtime=1263634230, st_ctime=1263634230)
>>> os.stat(u"漢字")
posix.stat_result(st_mode=33188, st_ino=548583333L, st_dev=2049L, st_nlink=1, st_uid=1000, st_gid=1000, st_size=8L, st_atime=1263634240, st_mtime=1263634230, st_ctime=1263634230)
>>> open("漢字").read()
'testing\n'
>>> open(u"漢字").read()
'testing\n'
अगर यह काम नहीं करता है, को चलाने के "स्थान"; यदि मान en_US.UTF-8 के बजाय "सी" हैं, तो हो सकता है कि आपके पास लोकेल सही ढंग से इंस्टॉल न हो।
आप Windows में कर रहे हैं, मुझे लगता है कि यूनिकोड फ़ाइल नाम हमेशा से ही के बाद से Windows में यूनिकोड फ़ाइल एपीआई पारदर्शी रूप से समर्थित है, (कम से कम ओएस/POSIX मॉड्यूल के लिए) काम करना चाहिए।
अपने समाधान के साथ समस्या यह है कि अपने पोर्टेबल नहीं है। os.path.exists को ओएस लोकेल के आधार पर पारदर्शी रूप से एन्कोडिंग को संभालना चाहिए। –