2012-11-18 69 views
2

我已經能夠獲取列以輸出分隔列表中列的值。不過,我需要保留這些值並逐一使用它們來執行亞馬遜查找。亞馬遜查找不是問題。讓XLRD一次提供一個價值一直是個問題。是否還有一種在Python中設置時間的有效方法?我發現計時器問題的唯一答案是記錄過程開始的時間並從那裏開始計數。我寧願只是一個計時器。這個問題有兩個部分,這是我迄今爲止所做的。使用XLRD對列中的行進行迭代

我使用的argv加載電子表格xlrd [1] i的使用的argv其複製到新的電子表格名稱[2]; argv [3]我需要成爲計時器實體,但我還沒有那麼遠。

我曾嘗試:

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

我知道這是一個有點含糊。我應該嘗試做一些像column = colname(colx = 2)的東西,然後我可以爲列中的行做任何事情:任何幫助或方向都非常感謝。

回答

2

在您的代碼中使用colname()只會返回該列的名稱(例如,默認情況下爲'C',除非您重寫名稱)。此外,colname的使用超出了工作簿內容的範圍。我想你會想要從你正在加載的工作簿中選擇一個特定的工作表,並且在該工作表中你希望引用一列的值(在你的例子中是2),這聽起來有點正確?

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

雖然我覺得在看調用amazon.ItemLookup()你可能想參考row"row"因爲後者是一個簡單的字符串,前者是從名爲row變量的實際內容的for循環。

+0

注意:你想'col_values' - 'col'返回'Cell'對象。 –

+0

謝謝,我會試試這個! – eusid

+0

是的,'col_values',對不起,遺憾的是,單元格的repr()返回值作爲值。 – zzzirk