Why 'files.py' does not print the filenames into a table format?

Νίκος support at superhost.gr
Mon Jun 17 02:11:05 EDT 2013


On 17/6/2013 8:58 πμ, Νίκος wrote:
> On 15/6/2013 11:37 μμ, Joshua Landau wrote:
>> On 15 June 2013 20:51, Nick the Gr33k <support at superhost.gr> wrote:
>>> On 15/6/2013 10:46 μμ, Jarrod Henry wrote:
>>>>
>>>> Nick, at this point, you need to hire someone to do your work for you.
>>>
>>>
>>> The code is completely ready.
>>> Some detail is missing and its not printing the files as expected.
>>
>> Look, Nick,
>>
>> A lot of people are frustrated by you. You should understand that. If
>> you cannot, you need to step back and consider, or you really are a
>> troll.
>>
>> Now, obviously it's not going to get you any help to have half of the
>> forum angry at you. People have stopped helping, at least in large.
>> This is fine; people here are volunteers. But you want help.
>>
>> So, Nick, listen. You need to learn how to ask *smart* questions. If
>> you do, I *guarantee* that people will respect you a lot more. I'll be
>> willing to give a bit of time to explain what I mean.
>>
>> 1) What is your problem. Not "I want to know why it doesn't print
>> anything." Here's an example, for some random idea:
>>
>>> I've written some code to find the first file in a directory which
>>> is not UTF-8. Lines 40-42 are meant to print out the file found
>>> to a log ("/home/joshua/.logs/log"). Unfortunately, although
>>> there is no error, no file is printed to the log.
>>
>> 2) What have you tried? What debugging have you done? For someone of
>> your skill level, it's also important to tell us what you think your
>> code is doing. Example:
>>
>>> I've tried checking for a failure - when there is no non-UTF-8 file
>>> in the directory the appropriate error is raised. I think this should
>>> mean that the "else" after the "for" loop would be run, and this
>>> should run the lines 40-42 above when there *is* a non-UTF-8
>>> file.
>>
>> 3) If possible, give us an example we can run.
>>
>>> To make helping easier, I've removed the code that searches the
>>> directory as I know that works, and instead there's a list of BytesIO
>>> and StringIO objects that pretend to be them. The bug is still
>>> there.
>>
>> Do you see the difference?
>>
>>> Irrelevant to my question i just noticed weird behavior about my
>>> pelatologio.py script which can be seen here:
>>>
>>> http://superhost.gr/?show=stats
>>>
>>> The first 3 files are of my doing.
>>> All the rest are of someone else's that managed to append entries
>>> into my
>>> counters database utilizing this code:
>>>
>>> ================
>>>
>>>          try:
>>>                  #find the needed counter for the page URL
>>>                  cur.execute('''SELECT ID FROM counters WHERE url =
>>> %s''',
>>> page )
>>>                  data = cur.fetchone()        #URL is unique, so
>>> should only
>>> be one
>>>
>>>                  if not data:
>>>                          #first time for page; primary key is
>>> automatic, hit
>>> is defaulted
>>>                          cur.execute('''INSERT INTO counters (url)
>>> VALUES
>>> (%s)''', page )
>>>                          cID = cur.lastrowid        #get the primary key
>>> value of the new record
>>> ======================
>>>
>>> Does someone want to state something?
>>
>> Sure. Here I go:
>>
>> What's the question?
>
>
> I DID, I FINALLY DID IT JUST NOW!!
>
> HERE ARE THE MODIFICATIONS THAT MADE IT HAPPEN!
>
>
> ==========================================================================================================
>
> # 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') )
> ================================
>
> i SMASHED MY HEAD INTO THE WALL, BUT I MADE IT!!!!
> FINALLY AFTER > 15 DAYS!!
>
> FEEL FREE TO CONGRATULATE ME!

oups!

everything work as expected but not the part when the counter of a 
filename gets increased when the file have been requested.

I don't see how since:

if filename:
	#update file counter
	cur.execute('''UPDATE files SET hits = hits + 1, host = %s, lastvisit = 
%s WHERE url = %s''', (host, lastvisit, filename) )

-- 
What is now proved was at first only imagined!



More information about the Python-list mailing list