我的问题是,如果除了下面有任何其他方式一次迭代一个文件一个字符?
with open(filename) as f:
while True:
c = f.read(1)
if not c:
print "End of file"
break
print "Read a character:", c
Run Code Online (Sandbox Code Playgroud)
由于没有像Java中那样检查是否有东西可读的功能,因此还有其他方法.此外,在示例中,当变量c到达文件末尾时,它会是什么?感谢任何人的帮助.
另一种选择是使用itertools.chain.from_iterable():
import itertools
with open("test.txt") as f:
for c in itertools.chain.from_iterable(f):
print(c)
Run Code Online (Sandbox Code Playgroud)
chain.from_iterable创建一个iterable,它返回给定iterable中第一个iterable的元素,直到它耗尽,然后进入下一个iterable,直到所有的iterables都用完为止.通常这用于展平列表列表,但在这种情况下,它允许您忽略行.
这是否真的比嵌套循环更好是另一回事(它会更快一些,但这不太重要),但值得一提.
这是一种方式:
with open(filename) as f:
for line in f:
for c in line:
pass
Run Code Online (Sandbox Code Playgroud)
或者这个呢?
with open(filename) as f:
for c in f.read():
pass
Run Code Online (Sandbox Code Playgroud)