为了账号安全,请及时绑定邮箱和手机立即绑定

python如何将每一行写成一个文件

python如何将每一行写成一个文件

慕运维8079593 2022-05-24 13:22:41
我有一个 5 行长的 JSON 文件。我想将每一行写入一个单独的文件,即line1写入file1,line2到file2等现在,我正在尝试将文件写入文件,但数据在一行中且无序,并且在写入文件的每个键和值之前都有一个奇怪的'u'。import jsonwith open("test1.json") as f:    with open("1.json","w") as o:        lines = f.readline()        for line in lines:            y =  json.loads(line)            print(y)            json.dump(y,o)
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

 linecount = 0 

   with open("test1.json") as f:

        lines = f.readline()

        for line in lines:

            linecount = linecount + 1

            with open(str(linecount)+".json","w") as o:

                y =  json.loads(line)

                print(y)

                o.writelines(y)

更新:添加了@tripleee 建议


fp = open("test1.json",'r')

for i, line in enumerate(fp):

    with open(str(i)+".json","w") as o:

        y =  json.loads(line)

        print(y)

        o.writelines(y)

您的代码中的一切看起来都很好,除了这一行with open("1.json","w") as o: 更改这一行以为每一行创建新文件


逻辑是 - 计算行数,使用 linecount.json 创建文件并转储 json


查看完整回答
反对 回复 2022-05-24
?
PIPIONE

TA贡献1829条经验 获得超9个赞

最有效的方法是:


with open('test1.json').readlines() as json_data:  # readlines returns a list containing each line as seperate items

    for i in range(len(json_data)):  # For loop allows this to work with any number of lines

        file = open(f'{str(i+1)}.json', 'w')  # Same as '{str(i+1)}.json'.format() or str(i+1)+'.json'

        file.write(json_data[i])

        file.close()

        # print(json.loads(json_data[i]) # Uncomment if you want to print the content of each line

这允许您使用任意数量的行 - 为您动态命名输出文件。


u字符串前面的(如)u'string'表示 unicode 字符串。现在这是不推荐使用的 Python 语言的包含 - 默认字符串类型是 unicode。它现在只在 python 3 中与 python 2 兼容。


查看完整回答
反对 回复 2022-05-24
  • 2 回答
  • 0 关注
  • 267 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信