Turnign greek-iso filenames => utf-8 iso

Νικόλαος Κούρας support at superhost.gr
Thu Jun 13 10:28:38 EDT 2013


On 13/6/2013 9:49 πμ, Νικόλαος Κούρας wrote:
> On 12/6/2013 1:40 μμ, Νικόλαος Κούρας wrote:
>> Thanks Steven , i made some alternations to the variables names and at
>> the end of the way that i check a database filename against and hdd
>> filename. Here is the code:
>>
>> #
>> =================================================================================================================
>>
>>
>> # Convert wrongly encoded filenames to utf-8
>> #
>> =================================================================================================================
>>
>>
>> path = b'/home/nikos/public_html/data/apps/'
>> filenames = os.listdir( path )
>>
>> utf8_filenames = []
>>
>> for filename in filenames:
>>      # Compute 'path/to/filename'
>>      filename_bytes = path + filename
>>      encoding = guess_encoding( filename_bytes )
>>
>>      if encoding == 'utf-8':
>>          # File name is valid UTF-8, so we can skip to the next file.
>>          utf8_filenames.append( filename_bytes )
>>          continue
>>      elif encoding is None:
>>          # No idea what the encoding is. Hit it with a hammer until it
>> stops moving.
>>          filename = filename_bytes.decode( 'utf-8', 'xmlcharrefreplace' )
>>      else:
>>          filename = filename_bytes.decode( encoding )
>>
>>      # Rename the file to something which ought to be UTF-8 clean.
>>      newname_bytes = filename.encode('utf-8')
>>      os.rename( filename_bytes, newname_bytes )
>>      utf8_filenames.append( newname_bytes )
>>
>>      # Once we get here, the file ought to be UTF-8 clean and the
>> Unicode name ought to exist:
>>      assert os.path.exists( newname_bytes.decode('utf-8') )
>>
>>
>> # Switch filenames from utf8 bytestrings => unicode strings
>> filenames = []
>>
>> for utf8_filename in utf8_filenames:
>>      filenames.append( utf8_filename.decode('utf-8') )
>>
>> # Check the presence of a database file against the dir files and delete
>> record if it doesn't exist
>> cur.execute('''SELECT url FROM files''')
>> data = cur.fetchall()
>>
>> for url in data:
>>      if url not in filenames:
>>          # Delete spurious
>>          cur.execute('''DELETE FROM files WHERE url = %s''', url )
>> =========================
>>
>> Now 'http://superhost.gr/?page=files.py' is not erring out at all but
>> also it doesn't display the big filename table for users to download.
>>
>> Here is how i try to print the filenames with button for the users:
>>
>> =================================================================================================================
>>
>>
>> #Display ALL files, each with its own download button#
>> =================================================================================================================
>>
>>
>> print('''<body background='/data/images/star.jpg'>
>>           <center><img src='/data/images/download.gif'><br><br>
>>           <table border=5 cellpadding=5 bgcolor=green>
>> ''')
>>
>> try:
>>      cur.execute( '''SELECT * FROM files ORDER BY lastvisit DESC''' )
>>      data = cur.fetchall()
>>
>>      for row in data:
>>          (filename, hits, host, lastvisit) = row
>>          lastvisit = lastvisit.strftime('%A %e %b, %H:%M')
>>
>>          print('''
>>          <form method="get" action="/cgi-bin/files.py">
>>              <tr>
>>                  <td> <center> <input type="submit" name="filename"
>> value="%s"> </td>
>>                  <td> <center> <font color=yellow size=5> %s </td>
>>                  <td> <center> <font color=orange size=4> %s </td>
>>                  <td> <center> <font color=silver size=4> %s </td>
>>              </tr>
>>          </form>
>>          ''' % (filename, hits, host, lastvisit) )
>>      print( '''</table><br><br>''' )
>> except pymysql.ProgrammingError as e:
>>      print( repr(e) )
>
> Steven, i can create a normal user account for you and copy files.py
> into your home folder if you want to take a look from within.
>
> Since the code seems correct, cause its not erring out and you 've
> helped me write it, then i dont knwo what else to try.
>
> Those files inside 'apps' dir ought to be printed in an html table fter
> their utf-8 conversion.
>
> They still insist not to...


Can you accept please? or suggest something i should try so for the 
files to be correctly viewed by my visitors?



More information about the Python-list mailing list