lines = files.readlines()
for line in lines:
if not line.startswith(' '):
res = True
if line.startswith(' '):
res = False
return res
这是我的代码,但是,它返回True,因为至少有一行不是以空格开头的。我如何修复它所以如果我打开的文件中的每一行都以空格以外的东西开头,它将返回True。如果至少有一行以空格开头,则返回False。
答案 0 :(得分:5)
使用all()
:
<强>演示:强>
>>> lines = ['a', ' b', ' d']
>>> all(not x.startswith(' ') for x in lines)
False
>>> lines = ['a', 'b', 'd']
>>> all(not x.startswith(' ') for x in lines)
True
此外,无需在内存中加载所有行,只需遍历文件对象:
with open('filename') as f:
res = all(not line.startswith(' ') for line in f)
答案 1 :(得分:4)
使用内置的all
。
return all(not line.startswith(' ') for line in lines)
文档中的all()
函数:
all(iterable) -> bool Return True if bool(x) is True for all values x in the iterable. If the iterable is empty, return True.
您也可以以相同的方式使用内置的any
。
return not any(line.startswith(' ') for line in lines)
文档中的any()
函数:
any(iterable) -> bool Return True if bool(x) is True for any x in the iterable. If the iterable is empty, return False.
答案 2 :(得分:0)
with open('filename') as f:
res = True
for line in f:
if line.startswith(' '):
res = False
break
return res