Python 计算两个数据集之间的平均错误时出现名称错误

Python 计算两个数据集之间的平均错误时出现名称错误,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我想计算两个数据集之间的平均误差,并将结果写入文件,但我的代码给出了此误差: NameError:未定义名称“first1” 你能告诉我如何修复这个错误吗 我用来运行代码的命令如下: python script.py input1.txt input2.txt>output.txt 我的代码: import numpy from numpy import * import scipy import scipy.stats import matplotlib. pyplot as plt impo

我想计算两个数据集之间的平均误差,并将结果写入文件,但我的代码给出了此误差:

NameError:未定义名称“first1”

你能告诉我如何修复这个错误吗

我用来运行代码的命令如下:

python script.py input1.txt input2.txt>output.txt

我的代码:

import numpy
from numpy import *
import scipy
import scipy.stats
import matplotlib. pyplot as plt
import matplotlib.patches as patches
from pylab import *
import scipy.integrate
from operator import itemgetter, attrgetter
import sys

def main(argv):
    t = open(sys.argv[1])
    first1 = t.readline()

    tt = open(argv[2])
    second2 = tt.readline()
    return [first1], [second2]

def analysis(first1, second2):

    first = np.array(first1, dtype = np.float64)
    second = np.array(second2, dtype = np.float64)

    #Average error
    avgerr = (first - second).mean()

    return [avgerr]

analysis(first1, second2)

if __name__ == '__main__':
    sys.exit(main(sys.argv))
2.5
2.8
3.9
4.2
5.8
0.8
2.5
3.2
5.8
6.3
input1.txt:

import numpy
from numpy import *
import scipy
import scipy.stats
import matplotlib. pyplot as plt
import matplotlib.patches as patches
from pylab import *
import scipy.integrate
from operator import itemgetter, attrgetter
import sys

def main(argv):
    t = open(sys.argv[1])
    first1 = t.readline()

    tt = open(argv[2])
    second2 = tt.readline()
    return [first1], [second2]

def analysis(first1, second2):

    first = np.array(first1, dtype = np.float64)
    second = np.array(second2, dtype = np.float64)

    #Average error
    avgerr = (first - second).mean()

    return [avgerr]

analysis(first1, second2)

if __name__ == '__main__':
    sys.exit(main(sys.argv))
2.5
2.8
3.9
4.2
5.8
0.8
2.5
3.2
5.8
6.3
input2.txt:

import numpy
from numpy import *
import scipy
import scipy.stats
import matplotlib. pyplot as plt
import matplotlib.patches as patches
from pylab import *
import scipy.integrate
from operator import itemgetter, attrgetter
import sys

def main(argv):
    t = open(sys.argv[1])
    first1 = t.readline()

    tt = open(argv[2])
    second2 = tt.readline()
    return [first1], [second2]

def analysis(first1, second2):

    first = np.array(first1, dtype = np.float64)
    second = np.array(second2, dtype = np.float64)

    #Average error
    avgerr = (first - second).mean()

    return [avgerr]

analysis(first1, second2)

if __name__ == '__main__':
    sys.exit(main(sys.argv))
2.5
2.8
3.9
4.2
5.8
0.8
2.5
3.2
5.8
6.3

你被困在哪里了?主程序中执行的第一条活动语句是

analysis(first1, second2)
这两个变量都没有在主程序中的任何位置定义。 这就是为什么你会出错。您拥有的序列如下所示:

import stuff
define (but don't execute) main function
define (but don't execute) analysis function
call analysis, giving it variables first1 & second2

同样,这些变量还没有定义。

我不知道如何修复它,因为我不知道您在做什么。这些应该是命令行中文件的名称吗?文件中的数据?还有别的吗?考虑到关于这个主题的许多示例和教程,我认为选择命令行参数可能不是你的问题;然后,使用
args
(如果需要优化搜索,请尝试
kwargs
)的联机源应该可以解决问题。