python - 从不同的py脚本使用函数时出现NameError

3 投票
1 回答
4527 浏览
提问于 2025-04-18 14:25

我有一个Python脚本,叫做MergeData.py,这个脚本用来合并两个数据文件。因为我有很多对数据文件需要合并,所以我觉得把MergeData.py里的代码放进一个函数,比如叫merge_data(),然后在另一个Python脚本里用循环来调用这个函数,会让代码更易读。

我有两个问题:

  1. 从速度上考虑,从另一个文件调用这个函数是否明智?而不是直接在循环里运行代码?(我有成千上万对需要合并的文件。)

  2. 我想在MergeData.py里使用这个函数,所以我需要在我的脚本开头加上from MergedData import merge_data。我在merge_data函数里使用了pandas,而我在主文件里是通过'import pandas as pd'来导入的。当我调用这个函数时,出现了'NameError: global name 'pd' is not defined'的错误。我尝试了在各种地方导入pandas模块,甚至在函数内部导入,但错误还是一直出现。我到底做错了什么?

在MergeData.py里我有

def merge_data(myFile1,myFile2):
       df1 = pd.read_csv(myFile1)
       df2 = pd.read_csv(myFile2)
       # ... my code

而在另一个文件里我有

import pandas as pd
from MergeData import merge_data
# then some code to get my file names followed by
FileList = zip(FileList1,FileList2)

for myFile1,myFile2 in FileList:
    # Run Merging Algorithm
    dataEq = merge_data(myFile1,myFile2)

我知道有关于如何从一个Python脚本调用另一个Python脚本的最佳方法的讨论,但我不太确定这是否和我有关。

1 个回答

2

你需要把这行代码

import pandas as pd

移动到实际需要这个符号 pd 的模块里,也就是说,把它从你的“其他文件”里移到 MergeData.py 文件里。

撰写回答