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... -- http://mail.python.org/mailman/listinfo/python-list
