我试图调用另一个python文件中存在的函数,并将正在运行的当前python文件中的用户输入传递给该函数。我一直在 错误:
“ NameError:未定义全局名称'main1'。”
这是我第一次用python编写并且第一次发布堆栈溢出消息,所以请原谅我,但是我不确定在这篇文章中包含什么内容。我还在一个文件中使用Tkinter
,另两个文件中使用pdf miner
,而我的python version 2.7
(我知道已经过时了)。
我尝试重命名被调用的主函数,以使其与其他可能调用的文件中的函数不混淆,创建一个 Init .py文件,将文件夹标记为源,因为我正在使用pycharm
,以不同方式导入.py
文件。
from DearNeighbor import *
from NameOnPage import *
from Tkinter import *
from tkFileDialog import *
from functools import partial
import Tkinter as tk
DearNeighbor
是包含main1
的文件,而NameOnPage
是包含main2
的文件。
我要运行的功能:
def submit():
if BoolNeighbor:
main1(txt0, pdf0)
if BoolName:
main2(txt1, pdf1)
要传递的txt
和pdf
文件是两个字符串,它们是要查看的文件的地址。
DearNeighbor中的Main1:
def main1(textinput, pdfinput):
start_time = time.time()
global txt00
global pdf00
txt00 = textinput
pdf00 = pdfinput
pdf_dict = pdf_records_file()
text_dict = records_in_text_file()
different = set()
count = 0
for key in sorted(set(pdf_dict.keys()) & set(text_dict.keys())):
pdf_value = [x.upper() for x in pdf_dict[key]]
text_value = [x.upper() for x in text_dict[key]]
if pdf_value == text_value:
count += 1
print()
print(key, "from pdf file", pdf_dict[key], colored("MATCHED", 'green', attrs=['bold']), key, "from text file", text_dict[key])
print()
else:
different.add(key)
print(key, "from pdf file", pdf_dict[key], colored("DID NOT MATCH", 'red', attrs=['bold']), key, "from text file", text_dict[key])
print()
print()
print("The number of records matched = ", colored(count, 'yellow',attrs=['bold']))
print()
print("Total time taken = ", colored(" %s seconds", 'yellow') % (time.time() - start_time))
显示的完整错误是:
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1536, in __call__
return self.func(*args)
File "/Users/will.rogers/Desktop/Python Scripts/ExecutableAutomation/venv/FrontEnd.py", line 69, in submit
main1(txt0, pdf0)
NameError: global name 'main1' is not defined
该程序中的其余代码在tkinter中构建了一个用户界面,该用户界面基本上是一堆(工作中的)按钮,这些按钮会导致提交功能,直到出现该错误为止。我希望这是足够的信息,谢谢!
答案 0 :(得分:0)
感谢您的所有评论!你们为我指明了正确的方向,对此我表示感谢。我在想要FrontEnd导入的类中导入FrontEnd,这引起了一些问题。然后,我在需要Unicode的地方遇到了一个异常,并给了它'str'。我通过升级到Python 3.7来解决此问题(从技术上讲我不应该这样做,但是2.7给了我很多我无法抗拒的问题。特别感谢@MisterMiyagi在评论中,没有他的帮助我不会注意到!