2017-04-13 111 views
0

好吧,所以我做了一個保存爲Python的按鈕,並想知道如何從保存它的位置檢索文件路徑。我也想知道在保存過程中名稱是否改變了,怎麼知道它是什麼。如果我嘗試在不同的.py文件中調用文件名,我收到一個錯誤代碼。代碼按鈕低於Python文件路徑和名稱檢索

感謝

import tkinter, tkinter.constants, tkinter.filedialog 

class tkFile(tkinter.Frame): 

    def __init__(self, root): 

     tkinter.Frame.__init__(self, root) 
     button_opt = {'fill': tkinter.constants.BOTH, 'padx': 5, 'pady': 5} 
     tkinter.Button(self, text='Save As',command=self.asksaveasfilename).pack(**button_opt) 

     self.file_opt = options = {} 
     options['filetypes'] = [('all files', '.*'), ('csv files', '.csv')] 
     options['initialfile'] = 'data.csv' 
     options['parent'] = root 

    def asksaveasfilename(self): 
     filename = tkinter.filedialog.asksaveasfilename(**self.file_opt) 

     if filename: 
      return open(filename, 'w') 

if __name__=='__main__': 
    root = tkinter.Tk() 
    tkFile(root).pack() 
    root.mainloop() 

,我想的名字叫成是下面的代碼。具體來說,我正在尋找從另存爲按鈕調用名稱到另一個文件。錯誤代碼在未定義狀態下表明自己。

name = savePathButton.tkFile.asksaveasfilename(self) 

name 'self' is not defined 
+0

這個問題有點混亂。你會得到文件名,用來打開文件。爲什麼不在以後需要時將它保存? –

+0

在程序中稍後使用時,我很難返回文件名。這更像是創建文件按鈕而不是另存爲按鈕。 –

+0

你在這裏試圖做什麼? 'filename = tkinter.filedialog.asksaveasfilename(** self.file_opt)'給你用戶想要保存的'filename'。爲什麼使用'return open(filename,'w')'?爲什麼不只是'返回文件名',然後在後面的函數調用'打開(文件名,'W')'寫開放/創建和寫入文件? – pstatix

回答

0

您可以import os,並使用os.path.dirname(os.path.realpath(__file__))來檢索文件位置。

對於實際的文件名,您可以使用os.listdir(os.getcwd())這將返回目錄中的文件名列表。