在下面的删节代码中,我将从函数OpenFile中的文件中获取(大量)数据,并且我想在另一个函数ss中使用数据,而不必从中读取数据再次归档。这是可能的,如果是这样,我该怎么办?我认为这相当于在函数之间传递一个变量,但我似乎无法理解这个或如何在这种情况下应用它。在此之前,我很感谢您的帮助以及您对我的新手技能的耐心。
< 3
from Tkinter import *
from tkFileDialog import askopenfilename, asksaveasfile
def OpenFile():
gen = []
fam = []
OTUs = []
save_fam = []
save_gen = []
save_OTU = []
FindIT_name = askopenfilename()
data = open(FindIT_name, "r").readlines()
#some data manipulation here
def ss():
ss_file = asksaveasfile(mode="w", defaultextension=".csv")
ss_file.write("OTU, Family, Genus")
#I want to get data here, specifically data from FindIT_name (see OpenFile function)
root = Tk()
root.minsize(500,500)
root.geometry("500x500")
root.wm_title("Curate Digitized Names")
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Get FindIt Input", command=OpenFile)
filemenu.add_separator()
filemenu.add_command(label="Quit", command=stop)
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)
root.mainloop()
答案 0 :(得分:1)
老实说,这对我来说真的很难读,但总的来说,你想要在函数之间传递数据的方式是这样的:
def foo(file_path):
data = open(file_path, 'rb').read()
result = bar(data)
def bar(data):
### do something to data
对于您的原始示例,应用这样的方法:
def OpenFile():
gen = []
fam = []
OTUs = []
save_fam = []
save_gen = []
save_OTU = []
FindIT_name = askopenfilename()
ss(FindIT_name)
data = open(FindIT_name, "r").readlines()
#some data manipulation here
def ss(FindIT_name):
ss_file = asksaveasfile(mode="w", defaultextension=".csv")
ss_file.write("OTU, Family, Genus")
### If you need to do something, you now have FindIT_name available.