一个输入文件到多个输出文件

时间:2012-11-11 22:48:35

标签: python

我在这个网站上发现了一些有用的东西,但是我的输入文件与已发布的示例有所不同,我无法以有效的方式实现飞跃。

我的输入文件如下所示:

sample_dude data1 data2 data3 data4
sample_lady data5 data6 data7 data8
sample_dude data9 data10 data11 data12
sample_child data13 data14 data15 data16

我想为每个样本创建一个包含所有数据列的单独文件。例如,一个文件名为sample_dude.txt,如下所示:

data1 data2 data3 data4
data9 data10 data11 data12

样本数量未知但总是只有四个数据列。

任何帮助非常感谢。谢谢。

PS:我正在尝试在python中执行此操作。

3 个答案:

答案 0 :(得分:4)

您可以通过打开文件并循环遍历每一行来完成此操作。我不会为你编写代码,但这是一个算法。

# Open the input file
# Loop through each line of the file
    # Split the line into the file name and the data
    # Open the file name and append the data to the end

您还可以在打开文件之前保存所有文件的数据。如果您有许多包含多行的文件,这会更快。

答案 1 :(得分:0)

例如:

with open('input.txt') as input:
    for line in input:
        name, data = line.split(' ', 1)

        with open('{0}.txt'.format(name), 'a') as f:
            f.write(data)

答案 2 :(得分:0)

尝试这样的事情?拆分将所有文件名映射到列列表,创建并写入每个文件的行。

with open('someFile.txt') as f:
  out = {}
  for line in f:
    key, data = line.split(' ', 1)        
    if not key in out.keys():
      out[key] = []
    out[key].append(data)

for k, v in out.items():
  with open(k+'.txt', 'w') as f:
    f.writelines(v)