【问题标题】:Why am I getting a NameError with below code?为什么我会收到带有以下代码的 NameError?
【发布时间】:2021-07-06 12:08:44
【问题描述】:

code error message

我收到变量 data_A 的名称错误,我不知道为什么...感谢任何帮助。谢谢!关注的变量是data_A

import sys
import csv
import statistics
#modularizing week1 program
def main():

    try:
        column = int(sys.argv[1])
        filename = sys.argv[2]
        with open(filename,'r') as csv_file:
            csv_x = csv.reader(csv_file, delimiter=' ', skipinitialspace=True)
            data_A = [float(line[column-1]) for line in csv_x if (float(line[column-1]))!=-9999.0]
    except:
        column = int(sys.argv[1])
        csv_x = csv.reader(sys.stdin, delimiter= ' ', skipinitialspace=True)
        data_A = [float(line[column-1]) for line in csv_x if (float(line[column-1]))!=-9999.0]

#statistical analysis for data
print(
    'min:', min(data_A),
    'max:', max(data_A),
    ', average:', mean(data_A),
    ', median:', median(data_A)
)

def compute_stats(values):
    import statistics

    if values == []:
        return(None,None,None,None)
    else:
        minimum = min(values)
        maximum = max(values)
        mean = statistics.mean(values)
        median = statistics.median(values)
        return(minimum,maximum,mean,median)

#call main function if code is not working
if __name__ == "__main__":
    main()

【问题讨论】:

    标签: csv error-handling nameerror sos


    【解决方案1】:

    您收到名称错误,因为“data_A”的范围在封闭方法内,即 main()。因此,“data_A”在 main() 之外是不可见的。

    避免这种情况的一种方法是将 print() 移到 main() 中

    例如

    def main():
        try:
            data_A = "localized"
        except Exception as e_x:
            data_A = "exception"
    
    print(data_A)
    
    if __name__ == "__main__":
        main()
    
    Traceback (most recent call last):
      File "<string>", line 9, in <module>
    NameError: name 'data_A' is not defined
    

    在 main() 中移动 print 解析,例如

    def main():
        try:
            data_A = "localized"
        except Exception as e_x:
            data_A = "exception"
    
        print(data_A)
    
    if __name__ == "__main__":
        main()
    
    
    > localized
    

    【讨论】:

      猜你喜欢
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 2016-09-05
      相关资源
      最近更新 更多