在Python中将.txt文件分成多个部分

时间:2017-11-18 10:38:18

标签: python file

我是Python的初学者,我对文件阅读有疑问: 我需要处理文件中的信息以将其写入另一个文件中。我知道如何做到这一点,但它对我的计算机来说非常耗费资源,因为文件非常大,但我知道它是如何格式化的! 该文件遵循以下格式:

4 13
9 3 4 7
3 3 3 3
3 5 2 1

我不会解释它的用途,因为它需要很长时间而且不会非常有用,但文件必须一次又一次地由四行组成。现在,我使用它来读取文件并将其转换为很长的链:

inputfile = open("input.txt", "r")
output = open("output.txt", "w")
Chain = inputfile.read()
Chain = Chain.split("\n")
Chained = ' '.join(Chain)
Chain = Chained.split(" ")
Chain = list(map(int, Chain))

之后,我只是用"任务ID"来对待它,但我觉得它真的没有效率。 所以你知道我怎么能把链分成多个知道如何格式化的链? 谢谢你的阅读!

4 个答案:

答案 0 :(得分:1)

怎么样:

res = []
with open('file', 'r') as f:
  for line in f:
    for num in line.split(' '):
      res.append(int(num))

不是将整个文件读入内存,而是逐行进行。 这有帮助吗?

如果你需要一次走4行,只需添加一个内部循环。

关于输出,我假设你想对输入做一些计算,所以我不一定在同一个循环中做这个。一旦读取完成就处理输入,或者不使用列表,使用队列并在该线程写入时从队列中读取另一个线程。

也许列表理解的效用也会有所帮助(我怀疑这会产生影响):

res = []
with open('file', 'r') as f:
  for line in f:
    res.append( int(num) for num in line.split() )

答案 1 :(得分:1)

嗯有一些方法可以在不读取文件的情况下写入文件我相信

Add text to end of line without loading file

https://docs.python.org/2.7/library/functions.html#print

projects.stream()
        .flatMap(p -> p.getComponents().stream())
        .collect(Collectors.toList());

这可能会有所帮助,我也是新手,但是有更好的google fu XD

答案 2 :(得分:0)

也许一行一行。这样就消耗了更少的内存。

inputfile = open("input.txt", "r")
output = open("output.txt", "a")

while True:
    line = inputfile.readline()
    numbers = words.split(" ")
    integers = list(map(int, numbers))

    if not line: 
       break

单词中可能有换行符\n。您还应该用空字符串替换它。

答案 3 :(得分:0)

如果您不想消耗内存(如果文件非常大,您可以运行它),您需要逐行阅读留言权。

with open('input.txt', 'w') as inputfile, open('"output.txt', 'w') as output:
    for line in inputfile:
        chain = line.split(" ")
        #do some calculations or what ever you need
        #and write those numbers to new file
        numbers = list(map(int, chain))
        for number in numbers
            output.write("%d " % number)