Issue 1001604: glob doesn't return unicode with no dir in unicode filename (original) (raw)
Logged In: YES user_id=12579
I wrote a slightly different patch that converts the os.curdir to Unicode inside glob but the patch here is just as good. The nnorwitz patch works well for me on Windows with Unicode file names:
glob.glob("*") ['a.bat', 'abc', 'ascii', 'b.bat', 'fileobject.c', 'fileobject.c.diff', 'Gr\xfc\xdf-Gott', 'pep-0277.txt', 'posixmodule.c', 'posixmodule.c.diff', 'uni.py', 'winunichanges.zip', 'Ge??-sa?', '????????????', '??????', '???', '????G\xdf', '???']
glob.glob(u"*") [u'a.bat', u'abc', u'ascii', u'b.bat', u'fileobject.c', u'fileobject.c.diff', u'Gr\xfc\xdf-Gott', u'pep-0277.txt', u'posixmodule.c', u'posixmodule.c.diff', u'uni.py', u'winunichanges.zip', u'\u0393\u03b5\u03b9\u03ac-\u03c3\u03b1\u03c2', u'\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435', u'\u05d4\u05e9\u05e7\u05e6\u05e5\u05e1', u'\u306b\u307d\u3093', u'\u66e8\u05e9\u3093\u0434\u0393\xdf', u'\u66e8\u66e9\u66eb']
Here is my patch if you are interested:
--- glob.py Wed Jun 06 06:24:38 2001 +++ g:\Python23\Lib\glob.py Sun Aug 01 23:50:43 2004 @@ -19,7 +19,10 @@ return [] dirname, basename = os.path.split(pathname) if not dirname:
return glob1(os.curdir, basename)
# Use the current directory but match the argument
# string form, either unicode or string.
dirname = type(dirname)(os.curdir)
elif has_magic(dirname): list = glob(dirname) else: @@ -40,7 +43,7 @@ return resultreturn glob1(dirname, basename)
def glob1(dirname, pattern):
- if not dirname: dirname = os.curdir
- assert dirname try: names = os.listdir(dirname) except os.error:
2.5.1 (r251:54863, Jul 10 2008, 17:24:48)
Fails for me with 2.5.1 on Linux, OS X, and Windows.
glob.glob("") ['t.txt', 't\xd0\xb4.txt', 't\xe2\xbd\x94.txt'] glob.glob(u"") ['t.txt', 't\xd0\xb4.txt', 't\xe2\xbd\x94.txt'] glob.glob(u"./*") [u'./t.txt', u'./t\u0434.txt', u'./t\u2f54.txt']