2

我已经能够让列在单独的列表中输出列的值。但是我需要保留这些值并一一使用它们来执行亚马逊查找。亚马逊查找不是问题。让 XLRD 一次给出一个值一直是个问题。是否还有一种在 Python 中设置时间的有效方法?我发现计时器问题的唯一答案是记录进程开始的时间并从那里开始计数。我宁愿只是一个计时器。这个问题有点两部分,这是我到目前为止所做的。

我使用 argv[1] 使用 xlrd 加载电子表格,然后使用 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) 的事情,然后我可以为 row in column 做:非常感谢任何帮助或指导。

4

1 回答 1

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 循环命名的变量的实际内容。

于 2012-11-18T11:33:56.797 回答