Python:在循环

时间:2016-10-30 14:15:30

标签: python python-3.x

例如,有一个文本文件,其中包含0到9之间的数字:

  

0123456789

使用以下功能,我希望获得如下输出:

>>> print_char('filename')
0
>>> print_char('filename')
1
>>> print_char('filename')
2
.
.
.
>>> print_char('filename')
9

这意味着,每次调用该函数时,它都会返回下一个数字。

这是我的功能:

def print_char(filename):
    f = open(filename, 'r')
    while True:
        char=f.read(1)
        if not char: 
            break
        print(char)

...以及我得到的输出:

>>> print_char('filename')
0
1
2
3
.
.
.
9

那么,如何创建在每次调用时逐个字符返回的函数?

1 个答案:

答案 0 :(得分:7)

我会以不同的方式处理它,并创建一个函数,它接收一个返回生成器的文件名:

def reader(filename):
    with open(filename) as f:
        while True:
            # read next character
            char = f.read(1)
            # if not EOF, then at least 1 character was read, and 
            # this is not empty
            if char:
                yield char
            else:
                return

然后你需要只提供一次文件名

r = reader('filename')

文件保持打开状态,以便更快地运行。要获取下一个字符,请使用next内置函数

print(next(r))  # 0
print(next(r))  # 1
...

您还可以在此对象切片字符上使用itertools,例如islice,或者在for循环中使用# skip characters until newline for c in r: if r == '\n': break

  // ------------ Index.js ------------ 
  'use strict';

  var Event = require('./models/event.js');

  exports.handler = (event, context, callback) => {
     console.log('done');
  }