我想将一个(在现实生活中:巨大的)文件分割成多个文件,这些文件由数据中的第二列指定。例如,在下面的例子中,我需要文件431.csv
和rr1.csv
。
我的主要想法是打开新的连接,如果还没有打开的话就写——dictfiles_dict
中有一个打开连接的记录,然后遍历这个记录,最后关闭。你知道吗
我陷入了如何逐行引用这些连接的困境。你知道吗
在现实生活中,这些文件名(第二列)的数量和值事先是未知的。你知道吗
在这里找到了一些灵感:
write multiple files at a time
python inserting variable string as file name
How can I split a text file into multiple text files using python?
玩具数据在data_in
中的内容:
123,431,t
43,rr1,3
13,rr1,43
123,rr1,4
我的幼稚伪代码到现在为止:
files_dict = dict() #dict of file names
with open(data_in) as fi:
for line in fi:
x = line.split(',')[1]
if x not in files_dict:
fo = x + '.csv'
files_dict[x] = fo
'''
open files_dict[x]
write line to files_dict[x]
'''
else:
'''
write line to files_dict[x]
'''
for fo in files_dict.fos:
fo.close()
将
file
对象本身放入字典,而不是文件名。你知道吗您的想法是正确的,但是应该在dict中存储文件对象而不是文件名,并且不需要
else
块(应该与if
而不是for
对齐):您也可以将pandas用于您的大型csv,因为它可以很好地处理它,然后只需遍历pandas列:
输出为2个文件,431.csv和rr1.csv。 431.csv的内容:
rr1.csv的内容:
它会将任何添加的信息附加到重复文件中,我觉得这是基于伪代码的理想行为。这是一个很好的解决方案,因为它将在循环遍历列时打开和关闭您的文件。这样你就不会同时打开50个文件,这会给你的操作系统带来麻烦。你知道吗
相关问题 更多 >
编程相关推荐