Iterating over rows in a column with XLRD
Question: I have been able to get the column to output the values of the column in a
separated list. However I need to retain these values and use them one by one
to perform an Amazon lookup with them. The amazon lookup is not the problem.
Getting XLRD to give one value at a time has been a problem. Is there also an
efficient method of setting a time in Python? The only answer I have found to
the timer issue is recording the time the process started and counting from
there. I would prefer just a timer. This question is somewhat two parts here
is what I have done so far.

I load the spreadsheet with xlrd using argv[1] i copy it to a new spreadsheet
name using argv[2]; argv[3] i need to be the timer entity however I am not
that far yet.

I have tried:

    
    
    import sys
    import datetime
    import os
    import xlrd
    from xlrd.book import colname
    from xlrd.book import row
    import xlwt
    import xlutils
    import shutil
    import bottlenose
    
    AMAZON_ACCESS_KEY_ID = "######"
    AMAZON_SECRET_KEY = "####"
    
    print "Executing ISBN Amazon Lookup Script -- Please be sure to execute it python amazon.py input.xls output.xls 60(seconds between database queries)"
    
    print "Copying original XLS spreadsheet to new spreadsheet file specified as the second arguement on the command line."
    
    print "Loading Amazon Account information . . "
    
    amazon = bottlenose.Amazon(AMAZON_ACCESS_KEY_ID, AMAZON_SECRET_KEY)
    response = amazon.ItemLookup(ItemId="row", ResponseGroup="Offer Summaries", SearchIndex="Books", IdType="ISBN")
    shutil.copy2(sys.argv[1], sys.argv[2])
    
    print "Opening copied spreadsheet and beginning ISBN extraction. . ."
    wb = xlrd.open_workbook(sys.argv[2])
    
    print "Beginning Amazon lookup for the first ISBN number."
    for row in colname(colx=2):
        print amazon.ItemLookup(ItemId="row", ResponseGroup="Offer Summaries", SearchIndex="Books", IdType="ISBN")
    

I know this is a little vague. Should I perhaps try doing something like
column = colname(colx=2) then i could do for row in column: Any help or
direction is greatly appreciated.


Answer: The use of `colname()` in your code is simply going to return the **name** of
the column (e.g. 'C' by default in your case unless you've overridden the
name). Also, the use of colname is outside the context of the contents of your
workbook. I would think you would want to work with a specific _sheet_ from
the workbook you are loading, and from within that sheet you would want to
reference the values of a column (2 in the case of your example), does this
sound somewhat correct?

    
    
    wb = xlrd.open_workbook(sys.argv[2])
    
    sheet = wb.sheet_by_index(0)
    for row in sheet.col(2):
            print amazon.ItemLookup(ItemId="row", ResponseGroup="Offer Summaries", SearchIndex="Books", IdType="ISBN")
    

Although I think looking at the call to `amazon.ItemLookup()` you probably
want to refer to `row` and **not** to `"row"` as the latter is simply a string
and the former is the actual contents of the variable named `row` from your
for loop.

