Python .read()不能正确地将CSV读入字符串

时间:2015-04-01 23:25:13

标签: python amazon-mws

我正在尝试使用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

1 个答案:

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