Downloading a file form a displayed table

Discussion in 'Python' started by Íßêïò Ãêñ33ê, Mar 5, 2013.

  1. # =================================================================================================================
    # display download button for each file and downlaod it on click
    # =================================================================================================================
    if form.getvalue('show') == 'files':

    print ( "<center><a href='http://superhost.gr/files.html'> <img src='/data/images/download.png'></a><br>" )
    print ( "<table border=5 cellpadding=5 bgcolor=blue>" )

    path = "/data/files/"

    for filename in os.walk(path):
    print '''
    <form method="get" action="%s">
    print( "<tr><td><center> <button type='submit'> %s </button> </td></tr>" ) % filename
    </form>
    '''

    sys.exit(0)

    ========================

    I use the above code to tidplay a filenames table so the user cna download a displayed button style lookign file but its not printing anything for me just an emptry table

    '/data/files' has 5 files in it but its not showing any.
    I dont see what iam doign wrong
    Íßêïò Ãêñ33ê, Mar 5, 2013
    #1
    1. Advertising

  2. Íßêïò Ãêñ33ê

    Dave Angel Guest

    On 03/05/2013 04:00 AM, Îίκος ΓκÏ33κ wrote:
    > # =================================================================================================================
    > # display download button for each file and downlaod it on click
    > # =================================================================================================================
    > if form.getvalue('show') == 'files':
    >
    > print ( "<center><a href='http://superhost.gr/files.html'> <img src='/data/images/download.png'></a><br>" )
    > print ( "<table border=5 cellpadding=5 bgcolor=blue>" )
    >
    > path = "/data/files/"
    >
    > for filename in os.walk(path):
    > print '''
    > <form method="get" action="%s">
    > print( "<tr><td><center> <button type='submit'> %s </button> </td></tr>" ) % filename
    > </form>
    > '''
    >
    > sys.exit(0)
    >
    > ========================
    >
    > I use the above code to tidplay a filenames table so the user cna download a displayed button style lookign file but its not printing anything for me just an emptry table
    >
    > '/data/files' has 5 files in it but its not showing any.
    > I dont see what iam doign wrong
    >


    It would be useful to actually specifying the context of this fragment
    of code. Presumably it's running on a web server somewhere, and you're
    expecting the filenames to somehow show up on a browser. Which OS and
    which version of Python for that server, and what brand and version of
    browser?

    Have you considered closing the table, and ending the body of the page?

    Have you looked at the result with View->Source in your browser?

    --
    DaveA
    Dave Angel, Mar 5, 2013
    #2
    1. Advertising

  3. Ôç Ôñßôç, 5 Ìáñôßïõ 2013 11:45:09 ð.ì. UTC+2, ï ÷ñÞóôçò Dave Angel Ýãñáøå:

    > It would be useful to actually specifying the context of this fragment
    >
    > of code. Presumably it's running on a web server somewhere, and you're
    >
    > expecting the filenames to somehow show up on a browser. Which OS and
    >
    > which version of Python for that server, and what brand and version of
    >
    > browser?
    >
    >
    >
    > Have you considered closing the table, and ending the body of the page?


    The server run Linux and python version is v2.7 and the browser is Chrome v27

    The source appears empty.

    Frankly i dont see anythign wrong with my code:

    path = "/data/files/"

    for filename in os.walk(path):
    print '''
    <form method="get" action="%s">
    <tr><td><center> <button type="submit"> %s </button> </td></tr>
    </form>
    ''' % (filename, filename)

    sys.exit(0)
    Íßêïò Ãêñ33ê, Mar 5, 2013
    #3
  4. Ôç Ôñßôç, 5 Ìáñôßïõ 2013 11:45:09 ð.ì. UTC+2, ï ÷ñÞóôçò Dave Angel Ýãñáøå:

    > It would be useful to actually specifying the context of this fragment
    >
    > of code. Presumably it's running on a web server somewhere, and you're
    >
    > expecting the filenames to somehow show up on a browser. Which OS and
    >
    > which version of Python for that server, and what brand and version of
    >
    > browser?
    >
    >
    >
    > Have you considered closing the table, and ending the body of the page?


    The server run Linux and python version is v2.7 and the browser is Chrome v27

    The source appears empty.

    Frankly i dont see anythign wrong with my code:

    path = "/data/files/"

    for filename in os.walk(path):
    print '''
    <form method="get" action="%s">
    <tr><td><center> <button type="submit"> %s </button> </td></tr>
    </form>
    ''' % (filename, filename)

    sys.exit(0)
    Íßêïò Ãêñ33ê, Mar 5, 2013
    #4
  5. Íßêïò Ãêñ33ê

    Dave Angel Guest

    On 03/05/2013 04:00 AM, Îίκος ΓκÏ33κ wrote:
    >
    > <snip>


    > for filename in os.walk(path):


    But os.walk() doesn't return a filename. It returns a tuple. Have you
    tested any of this code outside of a server?

    Also, you're using tabs here. They don't show up in most email
    programs, so you're better off replacing them with an appropriate number
    of spaces. After all, indentation matters.


    > print '''
    > <form method="get" action="%s">
    > print( "<tr><td><center> <button type='submit'> %s </button> </td></tr>" ) % filename
    > </form>
    > '''
    >
    > sys.exit(0)
    >

    --
    DaveA
    Dave Angel, Mar 5, 2013
    #5
  6. Íßêïò Ãêñ33ê

    Dave Angel Guest

    On 03/05/2013 04:48 AM, Íßêïò Ãêñ33ê wrote:
    > Ôç Ôñßôç, 5 Ìáñôßïõ 2013 11:45:09 ð.ì. UTC+2, ï ÷ñÞóôçò Dave Angel Ýãñáøå:
    >
    >> It would be useful to actually specifying the context of this fragment
    >>
    >> of code. Presumably it's running on a web server somewhere, and you're
    >>
    >> expecting the filenames to somehow show up on a browser. Which OS and
    >>
    >> which version of Python for that server, and what brand and version of
    >>
    >> browser?
    >>
    >>
    >>
    >> Have you considered closing the table, and ending the body of the page?

    >
    > The server run Linux and python version is v2.7 and the browser is Chrome v27
    >
    > The source appears empty.


    In that case, there's something wrong far outside of this code fragment.
    A web page (html) has lots of required elements which were presumably
    in other parts of the script that are not shown here.


    >
    > Frankly i dont see anythign wrong with my code:
    >
    > path = "/data/files/"
    >
    > for filename in os.walk(path):
    > print '''
    > <form method="get" action="%s">
    > <tr><td><center> <button type="submit"> %s </button> </td></tr>
    > </form>
    > ''' % (filename, filename)
    >
    > sys.exit(0)
    >



    --
    DaveA
    Dave Angel, Mar 5, 2013
    #6
  7. Ôç Ôñßôç, 5 Ìáñôßïõ 2013 11:51:41 ð.ì. UTC+2, ï ÷ñÞóôçò Dave Angel Ýãñáøå:
    > On 03/05/2013 04:00 AM, Íßêïò Ãêñ33ê wrote:
    >
    > >

    >
    > > <snip>

    >
    >
    >
    > > for filename in os.walk(path):

    >
    >
    >
    > But os.walk() doesn't return a filename. It returns a tuple. Have you
    >
    > tested any of this code outside of a server?
    >
    >
    >
    > Also, you're using tabs here. They don't show up in most email
    >
    > programs, so you're better off replacing them with an appropriate number
    >
    > of spaces. After all, indentation matters.
    >
    >
    >
    >
    >
    > > print '''

    >
    > > <form method="get" action="%s">

    >
    > > print( "<tr><td><center> <button type='submit'> %s </button> </td></tr>" ) % filename

    >
    > > </form>

    >
    > > '''

    >
    > >

    >
    > > sys.exit(0)

    >
    > >

    >
    > --
    >
    > DaveA


    How is this lien supposed to be written do to iterate over a list of filenames?

    for filename in list( os.walk(path) ):

    i tried the above but still it doesn't work out.
    Íßêïò Ãêñ33ê, Mar 5, 2013
    #7
  8. Ôç Ôñßôç, 5 Ìáñôßïõ 2013 11:51:41 ð.ì. UTC+2, ï ÷ñÞóôçò Dave Angel Ýãñáøå:
    > On 03/05/2013 04:00 AM, Íßêïò Ãêñ33ê wrote:
    >
    > >

    >
    > > <snip>

    >
    >
    >
    > > for filename in os.walk(path):

    >
    >
    >
    > But os.walk() doesn't return a filename. It returns a tuple. Have you
    >
    > tested any of this code outside of a server?
    >
    >
    >
    > Also, you're using tabs here. They don't show up in most email
    >
    > programs, so you're better off replacing them with an appropriate number
    >
    > of spaces. After all, indentation matters.
    >
    >
    >
    >
    >
    > > print '''

    >
    > > <form method="get" action="%s">

    >
    > > print( "<tr><td><center> <button type='submit'> %s </button> </td></tr>" ) % filename

    >
    > > </form>

    >
    > > '''

    >
    > >

    >
    > > sys.exit(0)

    >
    > >

    >
    > --
    >
    > DaveA


    How is this lien supposed to be written do to iterate over a list of filenames?

    for filename in list( os.walk(path) ):

    i tried the above but still it doesn't work out.
    Íßêïò Ãêñ33ê, Mar 5, 2013
    #8
  9. Íßêïò Ãêñ33ê

    Lele Gaifax Guest

    Îίκος ΓκÏ33κ <> writes:

    > How is this lien supposed to be written do to iterate over a list of filenames?
    >
    > for filename in list( os.walk(path) ):
    >
    > i tried the above but still it doesn't work out.


    Please learn how Python itself can help you:

    $ python
    Python 2.7.3 (default, Jan 2 2013, 13:56:14)
    [GCC 4.7.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import os
    >>> help(os.walk)

    Help on function walk in module os:

    walk(top, topdown=True, onerror=None, followlinks=False)
    Directory tree generator.
    ...
    Example:

    import os
    from os.path import join, getsize
    for root, dirs, files in os.walk('python/Lib/email'):
    ...

    In general, the builtin help() function displays the documentation for
    either a single function or a whole module.

    ciao, lele.
    --
    nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
    real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
    | -- Fortunato Depero, 1929.
    Lele Gaifax, Mar 5, 2013
    #9
  10. 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] )
    Íßêïò Ãêñ33ê, Mar 5, 2013
    #10
  11. On Tue, Mar 5, 2013 at 8:01 AM, Îίκος ΓκÏ33κ <> wrote:

    > Please help me correct thois code, iam tryign ti for hours and i cant seem
    > to get it working....it irritates me....
    >


    There is no question here. No indication of what isn't working as you
    like. No traceback.

    >
    > 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
    >




    --
    Joel Goldstick
    http://joelgoldstick.com
    Joel Goldstick, Mar 5, 2013
    #11
  12. Íßêïò Ãêñ33ê

    Vytas D. Guest

    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κ <> 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
    >
    Vytas D., Mar 5, 2013
    #12
  13. On 05/03/2013 09:00, Îίκος ΓκÏ33κ wrote:
    > # =================================================================================================================
    > # display download button for each file and downlaod it on click
    > # =================================================================================================================
    > if form.getvalue('show') == 'files':
    >
    > print ( "<center><a href='http://superhost.gr/files.html'> <img src='/data/images/download.png'></a><br>" )
    > print ( "<table border=5 cellpadding=5 bgcolor=blue>" )
    >
    > path = "/data/files/"
    >
    > for filename in os.walk(path):
    > print '''
    > <form method="get" action="%s">
    > print( "<tr><td><center> <button type='submit'> %s </button> </td></tr>" ) % filename
    > </form>
    > '''
    >
    > sys.exit(0)
    >
    > ========================
    >
    > I use the above code to tidplay a filenames table so the user cna download a displayed button style lookign file but its not printing anything for me just an emptry table
    >
    > '/data/files' has 5 files in it but its not showing any.
    > I dont see what iam doign wrong
    >


    You're doing at least two things wrong.

    1) Not reading documentation
    2) Not trying the interactive prompt.
    3) Not using the print statement/function.
    4) Not taking any notice of what people tell you.
    5) Not showing what you expect to happen and what actually happens.
    6) You're not doing six wrong.

    --
    Cheers.

    Mark Lawrence
    Mark Lawrence, Mar 5, 2013
    #13
  14. Ôç Ôñßôç, 5 Ìáñôßïõ 2013 3:38:49 ì.ì. UTC+2, ï ÷ñÞóôçò Vytas D. Ýãñáøå:
    > 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ê <> 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 WHEREURL = %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


    Yes indeed! the problem was at the way os.walk resulted the data.

    one would think that os.walk would return the actual filenames ina tuple but it also returned coupel things more before the file themselevrs.

    thank you a lot for poitning this out to me.
    Íßêïò Ãêñ33ê, Mar 5, 2013
    #14
  15. Ôç Ôñßôç, 5 Ìáñôßïõ 2013 3:38:49 ì.ì. UTC+2, ï ÷ñÞóôçò Vytas D. Ýãñáøå:
    > 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ê <> 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 WHEREURL = %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


    Yes indeed! the problem was at the way os.walk resulted the data.

    one would think that os.walk would return the actual filenames ina tuple but it also returned coupel things more before the file themselevrs.

    thank you a lot for poitning this out to me.
    Íßêïò Ãêñ33ê, Mar 5, 2013
    #15
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. VB Programmer
    Replies:
    1
    Views:
    405
    VB Programmer
    Jul 31, 2004
  2. Kaypee
    Replies:
    1
    Views:
    317
    Kaypee
    Sep 15, 2005
  3. Kaypee
    Replies:
    1
    Views:
    378
    Nathan Sokalski
    Sep 15, 2005
  4. Pavan
    Replies:
    3
    Views:
    636
    Pavan
    Sep 17, 2005
  5. boney
    Replies:
    1
    Views:
    549
Loading...

Share This Page