2017-04-13 13 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() 

以下である私はに名前をコールするコードを下回っています。具体的には、名前を「名前を付けて保存」ボタンから別のファイルに呼び出すことを検討しています。エラーコードはselfを未定義にします。

name = savePathButton.tkFile.asksaveasfilename(self) 

name 'self' is not defined 
+0

この質問はちょっと混乱します。ファイルを開くために使用するファイル名が与えられます。あなたが後でそれを必要とするときにそれを保存してみませんか? –

+0

後でプログラムで使用するときにファイル名を返すのが難しいです。これは、[名前を付けて保存]ボタンよりもファイルボタンを作成することです。 –

+0

ここで何をしようとしていますか? 'filename = tkinter.filedialog.asksaveasfilename(** self.file_opt)'はあなたが保存したい 'filename'を与えます。なぜ 'open open(filename、 'w')'を使うのですか?なぜ 'return filename'だけでなく、それ以降の関数呼び出しで' open(filename、 'w') 'を使ってファイルのオープン/作成と書き込みを行うのはなぜですか? – pstatix

答えて

0

あなたはimport osをすることができますし、ファイルの場所を取得するためにos.path.dirname(os.path.realpath(__file__))を使用しています。

実際のファイル名については、os.listdir(os.getcwd())を使用して、ディレクトリ内のファイル名のリストを返すことができます。

関連する問題