对于python

时间:2017-03-04 02:37:25

标签: python

我有一个文本文件需要逐行分隔成单独的文本文件。因此,如果主文件包含字符串:

foo
bar
bla

我有3个文件可以用数字命名1.txt(包含字符串" foo"),2.txt(提供字符串" bar")和3.txt(包含字符串" bla")

直接的方法是打开三个文件,逐行写入和写入每个文件。但问题是当我们有很多线路或者我们不确切知道有多少线路时。似乎没有必要创建

f1=open('main_file', 'r')
f2=open('1.txt', 'w')
f3=open('2.txt', 'w')
f4=open('3.txt', 'w')

有没有办法在这个操作中放置一个计数器或一个可以处理这种问题的库?

3 个答案:

答案 0 :(得分:2)

循环读取文件中的行,保持行号;打开一个文件,其名称来自行号,并将该行写入文件:

     ID    col1  col2  col3
1     1    name  name1 Null
2     2    name2 name3 name4

答案 1 :(得分:2)

你会想要这样的东西。使用with是处理文件的首选方式,因为它会在with范围后自动为您关闭文件。

with open('main_file', 'r') as in_file:
  for line_number, line in enumerate(in_file):
    with open("{}.txt".format(i+1), 'w') as out_file:
      out_file.write(line) 

答案 2 :(得分:0)

首先,您可以将文件读入列表,其中每个元素代表文件中的一行。

for counter in range(len(data)):
    with open('/path/to/file/'+str(counter),'w') as f:
        f.write(data[counter])

然后你可以使用for循环分别写入文件。

with open() as f:
    #your operation

注意: 由于您不断打开大量文件,我强烈建议您使用

x = x | (x >> 1);
x = x | (x >> 2);
x = x | (x >> 4);
x = x | (x >> 8);
x = x | (x >> 16); // number of ops = 10

使用它的好处是可以确保Python按时发布资源。 细节: What's the advantage of using 'with .. as' statement in Python?