例如,有一个文本文件,其中包含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
那么,如何创建在每次调用时逐个字符返回的函数?
答案 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');
}