[英]python generator yield for a file
I want to use a generator for my script but I get alwayse an exception: 我想为脚本使用生成器,但是我总是遇到异常:
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
and here is my code, what should I change? 这是我的代码,我应该更改什么? I had never used a generator before. 我以前从未使用过发电机。
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()
update my mistake the else statement was wrong, sry 更新我的错误else语句错误,对不起
Change 更改
for line in file_in.read().replace('\n\n', '\n'):
and 和
else:
yield str(ip) + '\n'
to 至
for line in file_in:
line = line.strip()
if not line: continue
and 和
else:
yield line + '\n'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.