从python 3.x中的文件读取标记

时间:2014-04-08 00:45:50

标签: python python-3.x input

是否有某种方法可以通过令牌从文件中读取信息而不管格式化?例如,如果我尝试从输入文件生成ppm图像而不是2像素

255 0 0
0 0 255

显示为

255
0 0
0
0 255

我想在这种情况下通过令牌阅读,而不是在我的循环中按行阅读,但我找不到任何内置方法。

2 个答案:

答案 0 :(得分:1)

您可以随时滚动自己的文件迭代器:

class file_tokens:
    def __init__(self, file):
        self.file = file
        self.line = []
    def __iter__(self):
        return self
    def next(self):
        while not len(self.line):
            self.line = self.file.readline()
            if not self.line:
                raise StopIteration
            self.line = self.line.split()
        return self.line.pop(0)

然后像普通文件一样使用:

for token in file_tokens(open(infile)):
    print('Token: ' + token)

答案 1 :(得分:0)

您可以使用chain.from_iterable,其中line.split() for line in fin可以使用>>> with open('temp.txt', 'r') as fin: ... iter = chain.from_iterable(line.split() for line in fin) ... print(list(iter)) ... ['255', '0', '0', '0', '0', '255']

{{1}}