[python-win32] opening files with names in non-english characters.

Gerdus van Zyl gerdusvanzyl at gmail.com
Tue Feb 24 08:19:17 CET 2009


I see a couple of problems with your code:

1. where is n first given a value and what is it total file count,
etc? also you decrement the value, do you want the last file in the
directory or something?
2. The if os.path.isdir(full_path): .. findFile(full_path) part
doesn't return or handle the value so it's not useful so far i can
see. So you either need to "return findFile(full_path) " or "value =
findFile(full_path)"
3. I am not sure of your usage of n, the way i do similiar things is
to build a list and then just get the item i want by index or slicing.

~g

On Tue, Feb 24, 2009 at 5:28 AM, venu madhav <venutaurus539 at gmail.com> wrote:
> Hello,
>         First of all thanks for your response. I've written a function as
> shown below to recurse a directory and return a file based on the value of
> n. I am calling this fucntion from my main code to catch that filename. The
> folder which it recurses through contains a folder having files with unicode
> names (as an example i've given earlier.
> -----------------------------------------------------------------------------
> def findFile(dir_path):
>     for name in os.listdir(dir_path):
>         full_path = os.path.join(dir_path, name)
>         print full_path
>         if os.path.isdir(full_path):
>             findFile(full_path)
>         else:
>             n = n - 1
>             if(n ==0):
>                 return full_path
> --------------------------------------------------------------------------------------------------
>                     The problem is in the return statement. In the function
> when I tried to print the file name, it is printing properly but the
> receiving variable is not getting populated with the file name. The below
> code (1st statement) shows the value of the full_path variable while the
> control is at the return statement. The second statement is in the main code
> from where the function call has been made.
> Once the control has reached the main procedure after executing the findFile
> procedure, the third statement gives the status of file variable which has
> type as NoneType and value as None. Now when I try to check if the path
> exists, it fails giving the below trace back.
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> E:\DataSet\Unicode\UnicodeFiles_8859\001_0006_test_folder\0003testUnicode_ÍÎIÐNOKÔÕÖ×ØUÚÛÜUUßaáâãäåæicéeëeíîidnokôõö÷øuúûüuu.txt.txt
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> file = findFile(fpath)
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> file
> NoneType
> None
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> This is the final trace back:
> Traceback (most recent call last):
>   File "C:\RecallStubFopen.py", line 268, in <module>
>     if os.path.exists(file):
>   File "C:\Python26\lib\genericpath.py", line 18, in exists
>     st = os.stat(path)
> TypeError: coercing to Unicode: need string or buffer, NoneType found
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Please ask if you need any further information.
>
> Thank you,
> Venu
>
>
>
>
>
>
>
> On Mon, Feb 23, 2009 at 11:32 PM, Chris Rebert <clp2 at rebertia.com> wrote:
>>
>> On Mon, Feb 23, 2009 at 5:51 AM, venutaurus539 at gmail.com
>> <venutaurus539 at gmail.com> wrote:
>> > Hi all,
>> >          I am trying to find the attributes of afile whose name has
>> > non english characters one like given below. When I try to run my
>> > python scirpt, it fails giving out an error filename must be in string
>> > or UNICODE. When i try to copy the name of the file as a strinig, it
>> > (KOMODO IDE) is not allowing me to save the script saying that it
>> > cannot convert some of the characters in the current encoding which is
>> > Western European(CP-1252).
>> >
>> > 0010testUnicode_ėíîïðņōóôõöũøųúûüýþĸ !#$%&'()+,-.
>> > 0123456789;=@ABCD.txt.txt
>>
>> (1) How are you entering or retrieving that filename?
>> (2) Please provide the exact error and Traceback you're getting.
>>
>> Cheers,
>> Chris
>>
>> --
>> Follow the path of the Iguana...
>> http://rebertia.com
>
>
> _______________________________________________
> python-win32 mailing list
> python-win32 at python.org
> http://mail.python.org/mailman/listinfo/python-win32
>
>


More information about the python-win32 mailing list