如何在python中打开文本文件作为dict?

时间:2017-08-09 07:48:05

标签: python python-2.7

我有一个问题。这些是我拥有的大型text.txt文件的前几行:https://pastebin.com/UV7UiU5M我需要打开它作为dict来迭代它,并获取值。我试过

for line in open('/home/conacons/Documents/products_with_stocks.txt'):
    name = line.split()
    for i in name[0:2]:
        print i

我得到:

{
'BranchId':
'1',
 'ArticleId':
'50375476',
'EAN':
 '4029044771246',
  'Price':
 Decimal('299.95000'),
 'Stock':
  Decimal('1.00000'),
    'ReservedStock':
 Decimal('0'),
 'LastMove':
 datetime.datetime(2017,
 },

但它不可迭代,我不能使用这些值。

编辑:

我有一段代码来编写文件。它看起来像这样:

for n in range(0,650): 
    req['IterationConstraints']['BlockIndex'] = n 
    articles =   client.service.GetArticles(req) 
    f.write(str(articles)) 

2 个答案:

答案 0 :(得分:0)

首先,你需要一个有效的json你的日期错误:

{ ' BranchId&#39 ;: ' 1&#39 ;,  '条款ArticleID&#39 ;: ' 50375476&#39 ;, ' EAN&#39 ;:  ' 4029044771246&#39 ;,   '价格&#39 ;:  十进制(' 299.95000&#39),  '库存&#39 ;:   十进制(' 1.00000&#39),     ' ReservedStock&#39 ;:  十进制(' 0&#39),  ' LastMove&#39 ;:  datetime.datetime(2017,12,12)  }

然后,使用以下脚本我可以将文件评估为dict:

import datetime
from decimal import Decimal

with open('file2.txt') as json_file:
    eval(json_file.read())

#{'ReservedStock': Decimal('0'), 'EAN': '4029044771246', 'Price': Decimal('299.95000'), 'BranchId': '1', 'LastMove': datetime.datetime(2017, 12, 12, 0, 0), 'ArticleId': '50375476', 'Stock': Decimal('1.00000')}

如果要评估文件,则需要将文件建模为json或json列表。在此paste中,您拥有格式正确的文件

答案 1 :(得分:-2)

尝试在.txt文件中为你的dict添加一个名字...然后你可以用os.rename()zu doesnt_matter.py重命名该文件然后你可以从doesnt_matter import dictname