[英]python generator yield for a file
我想为脚本使用生成器,但是我总是遇到异常:
Traceback (most recent call last):
File "scan.py", line 56, in scan_m
for line in ip_list:
File "scan", line 46, in expand_ip_addr
yield str(ip) + '\n'
UnboundLocalError: local variable 'ip' referenced before assignment
这是我的代码,我应该更改什么? 我以前从未使用过发电机。
def expand_ip_addr():
with open('ip.txt', 'r') as file_in:
#remove blank lines
for line in file_in:
if '/' in str(line):
for ip in IPNetwork(str(line)):
yield str(ip
else:
line
def scan_m(ip_list):
i = 1
try:
for line in ip_list:
# do something with the line
i = i + 1
def main():
ip_list = expand_ip_addr()
scan_m(ip_list)
if __name__ == "__main__":
main()
更新我的错误else语句错误,对不起
更改
for line in file_in.read().replace('\n\n', '\n'):
和
else:
yield str(ip) + '\n'
至
for line in file_in:
line = line.strip()
if not line: continue
和
else:
yield line + '\n'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.