简体   繁体   English

Python生成器文件的产量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM