Python .read() 没有将 CSV 正确读入字符串
Python .read() doesn't read CSV correctly into string
我正在尝试使用 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 时,我得到一个错误,指出我的 headers 已关闭。
feed_content = open('/Scripts/data.txt', 'rb')
print feed_content.read()
feed_dat = feed_content.read()
我感觉 .read() 方法正在破坏我的制表符分隔数据。我可以 copy/paste 前几行并通过将数据用三引号引起来将它们推送到 API,但我似乎无法将选项卡文件读取到变量并以这种方式推送它。我也尝试过使用 .encode('utf-8') 对文件进行编码,但没有成功。感谢您的意见!
谢谢,
C
您正在呼叫 feed_content.read()
两次。第一次,整个内容被读取,光标现在指向文件的末尾。再次调用 feed_content.read()
将 return 一个空字符串,因为已经到达文件末尾。
有关此示例,请参阅 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
我正在尝试使用 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 时,我得到一个错误,指出我的 headers 已关闭。
feed_content = open('/Scripts/data.txt', 'rb')
print feed_content.read()
feed_dat = feed_content.read()
我感觉 .read() 方法正在破坏我的制表符分隔数据。我可以 copy/paste 前几行并通过将数据用三引号引起来将它们推送到 API,但我似乎无法将选项卡文件读取到变量并以这种方式推送它。我也尝试过使用 .encode('utf-8') 对文件进行编码,但没有成功。感谢您的意见!
谢谢,
C
您正在呼叫 feed_content.read()
两次。第一次,整个内容被读取,光标现在指向文件的末尾。再次调用 feed_content.read()
将 return 一个空字符串,因为已经到达文件末尾。
有关此示例,请参阅 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