我正在尝试使用MWS Api将制表符分隔的.txt文件推送到亚马逊。以下代码有效:
from boto.mws import connection
import time
# Amazon US MWS ID
MarketPlaceID = 'mpid'
MerchantID = 'merchantid'
AccessKeyID = 'akid'
SecretKey = 'secretkey'
conn = connection.MWSConnection(
aws_access_key_id=AccessKeyID,
aws_secret_access_key=SecretKey,
Merchant=MerchantID)
feed = conn.submit_feed(
FeedType='_POST_FLAT_FILE_PRICEANDQUANTITYONLY_UPDATE_DATA_',
PurgeAndReplace=False,
MarketplaceIdList=[MarketPlaceID],
content_type='text/tab-separated-values',
FeedContent="""SKU QUANTITY
ABC 123"""
)
使用上述方法,ABC的数量设置为123.但是,当我尝试从制表符分隔的文件中读取相同的数据到feed_dat并将feed_dat传递给FeedContent时,我收到一条错误,指出我的标题已关闭。< / p>
feed_content = open('/Scripts/data.txt', 'rb')
print feed_content.read()
feed_dat = feed_content.read()
我有一种感觉.read()方法正在破坏我的制表符分隔数据。我可以通过将数据包装在三引号中来复制/粘贴前几行并通过API推送它们,但我似乎无法将选项卡文件读取到变量并以此方式推送它。我也尝试使用.encode('utf-8')编码文件而没有运气。感谢您的投入!
谢谢,
C
答案 0 :(得分:3)
您正在拨打feed_content.read()
两次。第一次,读取整个内容,光标现在指向文件的末尾。再次调用feed_content.read()
将返回一个空字符串,因为已经到达文件的末尾。
有关此示例,请参阅read()
的文档。
一个简单的解决方法是在分配后移动print
,以避免尝试两次致电read()
:
feed_content = open('/Scripts/data.txt', 'rb')
feed_dat = feed_content.read()
print feed_dat # print has been moved after the assignment