[Tutor] Unicode filenames (Windows)
Kent Johnson
kent37 at tds.net
Tue Jun 20 17:52:54 CEST 2006
Terry Carroll wrote:
> Is it possible to process files with Unicode filenames in Windows?
>
> Ultimately, I want to read in a series of filenames, and rename them (to
> remove the unicode characters).
>
> In this test, I have one file whose name is XXXX.test, where "XXXX" are
> unicode characters.
>
> First attempt:
>
>>>> import os
>>>> file_list = [x for x in os.listdir('.') if x.endswith('test')]
>>>> oldname = file_list[0]
>>>> newname = "spam.test"
>>>> print oldname
> ????.test
>>>> os.rename(oldname,newname)
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> OSError: [Errno 22] Invalid argument
>
> PEP 277, http://www.python.org/dev/peps/pep-0277/ , suggests that Windows
> Unicode filename support was added in Python 2.3 (I'm on 2.4), using the
> posix module, but no joy: no posix module on my Windows XP install.
I'm guessing that when PEP 277 refers to the posix module maybe it means
the os module. What happens if you pass a Unicode string to listdir(),
e.g. os.listdir(u'.')?
Hmm, looks promising:
In [3]: os.listdir(u'.')
Out[3]: [u'enterData.py', u'test.py', u'SPY2.csv', u'\xe1\xe9\xed\xf3\xfa']
In [4]: p=_[3]
In [5]: p
Out[5]: u'\xe1\xe9\xed\xf3\xfa'
In [6]: os.rename(p, u'foo')
In [7]: os.listdir(u'.')
Out[7]: [u'enterData.py', u'test.py', u'SPY2.csv', u'foo']
Kent
More information about the Tutor
mailing list