Downloading a file form a displayed table

Vytas D. vytasd2013 at gmail.com
Tue Mar 5 08:38:49 EST 2013


Hi,

It is really complicated to reproduce the errors you get by running your
code since it involves database queries.

Though one thing that really needs your attention is how you handle the
results from os.walk(path).

Dave Angel told you already that: "But os.walk() doesn't return a filename.
It returns a tuple.".

To show where you are wrong I have create the directory structure:
Folder "folder1" that has files "file4.txt" and "file3.txt" inside.

In Python 2.6.5:
>>> import os
>>> for filename in os.walk('folder1'):
...  print(filename)
...
('folder1', [], ['file4.txt', 'file3.txt'])
>>>

So your code is treating results from os.walk() incorrectly. You get tuple,
so extract data you need from it first. In case you don't know how:

Print files only (no directories. Adapt code to your needs):
>>> for result in os.walk('folder1'):
...    for filename in result[2]:
...      print(filename)
...
file4.txt
file3.txt

In http://docs.python.org/2/library/os.html you will find:
os.walk(top, topdown=True, onerror=None, followlinks=False)
Generate the file names in a directory tree by walking the tree either
top-down or bottom-up. For each directory in the tree rooted at directory
top (including top itself), it yields a 3-tuple (dirpath, dirnames,
filenames).
...

Vytas


On Tue, Mar 5, 2013 at 1:01 PM, Νίκος Γκρ33κ <nikos.gr33k at gmail.com> wrote:

> Please help me correct thois code, iam tryign ti for hours and i cant seem
> to get it working....it irritates me....
>
> path = "/home/nikos/public_html/data/files/"
> for filename in os.walk(path):
>         try:
>                 #find the needed counter for the page URL
>                 cur.execute('''SELECT ID FROM files WHERE URL = %s''',
> (filename,) )
>                 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 files (URL, lastvisit)
> VALUES (%s, %s)''', (filename, date) )
>                         cID = cur.lastrowid        #get the primary key
> value of the new record
>                 else:
>                         #found the page, save primary key and use it to
> issue hit UPDATE
>                         cID = data[0]
>                         cur.execute('''UPDATE files SET hits = hits + 1,
> lastvisit = %s WHERE ID = %s''', (date, cID)
>         except MySQLdb.Error, e:
>                 print ( "Query Error: ", sys.exc_info()[1].excepinfo()[2] )
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20130305/f56cd045/attachment.html>


More information about the Python-list mailing list