2016-06-21 32 views
0

我正在做一个程序,需要两个文件比较,然后他们找到相似的比例,现在我有时间难以获取文件名,再通过它来打开功能读它然后使生成到另一个函数的数据,这说明我的错误如何使用要求打开文件名与开放功能再取该文件到另一个函数?

IOError: [Errno 22] invalid mode ('r') or filename: '' 

我的代码是

Copied_File = '' 
def Click_Copy(): 
    global Copied_File 
    Copied_File = tkFileDialog.askopenfilename(initialdir='C:/Users/%s' % user) 
    directory = os.path.split(Copied_File)[0] 
    return Copied_File 
with open((Copied_File), 'r')as file_1: 
    file1_data = file_1.read() 
    View_copied_File.insert(0.0, file1_data) 


btn_Copy = ttk.Button(text="Open Copied File",command=Click_Copy) 
btn_Copy.place(x =10, y = 30, width=120, height=34) 

View_copied_File= ScrolledText(Window_1, width=50, height=40,state = "normal") 
View_copied_File.place(x =10, y = 70) 
+1

忽略的功能,你的代码定义'Copied_File'为空字符串,然后尝试打开在'with'声明。由于您稍后才会调用该函数,因此阅读失败。该错误消息,即使是这么说的:'或文件名:“”'' – StefanS

+0

返回Click_Copy'的文件名。哟认为它返回它_to_? –

+0

我想执行的点击副本时,该按钮(btn_Copy)时 –

回答

0

由于@Stefans评论你,还有就是当你试图打开该文件Copied_File一个问题,因为你运行with open((Copied_File), 'r')as file_1:的那一刻,你有Copied_File =

这意味着:

with open((Copied_File), 'r')as file_1:等于with open('', 'r')as file_1:

您定义Click_Copy()方法,但你永远不执行它。所以你需要在with声明前调用该方法。

要解决你的问题,你可以直接调用方法:

...  
with open(Click_Copy(), 'r') as file_1: 
    ... 
+0

我希望当按下按钮(btn_Copy),那么该文件名传递给开放功能 –

+0

你已经做到了自己执行单击复制。 –

+0

,你给我提供了使程序打开的答案,尽快向打开的文件对话,我启动程序没有当我按一下按钮 –