open() and Arabic language

John Machin sjmachin at lexicon.net
Sun Aug 13 20:09:26 EDT 2006


MaaSTaaR wrote:
> Hello ...
>
> firstly , sorry for my bad English .
>
> i have problem with open() function when i use it with file which name
> in Arabic , the open() will not find the file , and i am sure the file
> is exist .
>
>
> so how i can solve this problem ?

Provide more information --  a major factor is which operating system
[my crystal ball says  that you are using Linux but it could be wrong].
Also an actual test case with a short file name. Here's an example with
a part-Chinese filename on a Windows machine, which just uses the
information in the Unicode HOWTO that you were pointed at by another
poster:

C:\junk\unicode_name>dir
[snip]
30/05/2006  09:25 AM                17 ??.txt
[snip]

# only 1 file in the directory; dir command mangles the displayed name

C:\junk\unicode_name>python
Python 2.4.3 (#69, Mar 29 2006, 17:35:34) [MSC v.1310 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
|>>> import os
|>>> os.listdir('.')
['??.txt']
|>>> os.listdir(u'.')
[u'\u5f20\u654f.txt']

# filename is kept in Unicode, so we can open it that way

|>>> f = open(u'\u5f20\u654f.txt')
|>>> f.read()
'yadda yadda yadda'
# success

|>>> import sys
|>>> sys.getfilesystemencoding()
'mbcs'

... I'm guessing that you will find that you have to encode the
filename in utf-8 then feed it to the open() function.

If you still have a problem, come back with exact (copy/paste) results
of both os.listdir() [the '.' and the u'.'], the
sys.getfilesystemencoding(), and your failed open() attempt.

Hope this helps,
John




More information about the Python-list mailing list