Python .read()不会正确读取CSV到字符串
问题描述:
我试图使用MWS Api将制表符分隔的.txt文件推送到Amazon。下面的代码工作:Python .read()不会正确读取CSV到字符串
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,我得到一个错误,指出我的标题已关闭。
feed_content = open('/Scripts/data.txt', 'rb')
print feed_content.read()
feed_dat = feed_content.read()
我有一种感觉.read()方法正在破坏我的制表符分隔数据。我可以复制/粘贴第一对几行,并通过用三引号将数据包装到API中来推送它们,但我似乎无法将该选项卡文件读取到变量中并以此方式推送它。我也尝试使用.encode('utf-8')编码文件,但没有运气。感谢您的意见!
谢谢
Ç
答
要调用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
真棒谢谢!我发现了另一个解决方案,可能会遇到与您无关的问题。您可以从网络中获取数据:response = urllib2.urlopen('http://www.website.com/output/nvt.txt') feed_dat = response.read() – cm9090 2015-04-01 23:55:19