Python .read() 无法将 CSV 正确读入字符串

标签 python amazon-mws

我正在尝试使用 MWS Api 将制表符分隔的 .txt 文件推送到 Amazon。下面的代码有效:

    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 时,我收到一条错误,指出我的 header 已关闭。

feed_content = open('/Scripts/data.txt', 'rb')
print feed_content.read()
feed_dat = feed_content.read()

我有一种感觉 .read() 方法正在破坏我的制表符分隔数据。我可以复制/粘贴前几行,并通过将数据用三引号括起来来通过 API 推送它们,但我似乎无法将选项卡文件读取到变量并以这种方式推送。我还尝试使用 .encode('utf-8') 对文件进行编码,但没有成功。感谢您的意见!

谢谢,

C

最佳答案

您正在调用 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

关于Python .read() 无法将 CSV 正确读入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402585/

相关文章:

python - 如何从 python 调用 nikto 并将输出作为字符串返回

python - 如何在( Nose )测试执行期间显示 Python 警告?

django - XML 向亚马逊 MWS 提交得很好,但价格没有更新

python - 亚马逊 API MWS 签名不匹配

python - 在函数之外使用变量

Python 扰码器程序

python - Pandas——将值从一列映射到另一列

java - 亚马逊 mws 能够注意到受限产品

java - 亚马逊 MWS 入门

api - 亚马逊 MWS 暂存器访问被拒绝