gpt4 book ai didi

python - 根据Python随机出现的模式将大文件拆分为小文件

转载 作者:行者123 更新时间:2023-11-30 22:34:07 25 4
gpt4 key购买 nike

我有一个包含以下内容的大文件:

Column1 column2 column3
345 367 Ramesh
456 469 Ramesh
300 301 Ramesh
298 390 Naresh
123 125 Suresh
394 305 Suresh
......
.....

现在,我想根据第3列中的名称将此文件拆分为小文件。像这样:

文件1:Ramesh.txt

column1 column2 column3
345 367 Ramesh
456 469 Ramesh
300 301 Ramesh

文件2:Naresh.txt

column1 column2 column3
298 390 Naresh

文件3:Suresh.txt

Column1 column2 column3
123 125 suresh
394 305 suresh

同样。我编写了以下 python 代码并且它有效:

def split_file(file1):
source=open(file1)
l=[]
header=0
header_line=""
file_count=0
for line in source:
line=line.rstrip()
a=line.split()
if header==0:
header_line=line
header+=1
else:
if a[-1] not in l:
l.append(a[-1])
file_count+=1
if file_count>1:
dest.close()
else:
pass
dest=open(a[-1],'a')
dest.write(header_line+"\n"+line+"\n")
else:
dest.write(line+"\n")
source.close()
dest.close()

现在,我的问题是如何修改这些代码以使其在未排序的情况下也能工作。例如:

Column1 column2 column3
345 367 Ramesh
123 125 Suresh
456 469 Ramesh
298 390 Naresh
300 301 Ramesh
394 305 Suresh

我是否应该生成随机变量作为值(以处理输出文件),并以第 3 列中的名称作为键。然后每次脚本遇到 key 时都使用这个字典打开文件?任何建议将不胜感激。

最佳答案

与其在每一行上打开和关闭文件指针,不如让它们保持打开状态,直到工作完成。

首先为文件指针创建一个字典:

fps = {}

然后在迭代数据文件的循环中,如果文件指针不存在,则创建它:

if a[-1] not in fps.keys():
fps[a[-1]] = open(a[-1], 'a')
fps[a[-1]].write(line)

然后在循环结束时您可以关闭文件指针:

for f in fps.values():
f.close()

关于python - 根据Python随机出现的模式将大文件拆分为小文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44947729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com