2017-06-01 9 views
0

不明瞭なタイトルについては残念ですが、それを置く方法はわかりませんが、 Pythonのテキストエディタです。私は、ファイルのユーザオープンのファイル名を取得したいか、pythonで保存します。ファイルのファイル名を開き、ファイルのファイル名をPythonで保存するにはどうすればいいですか?

def openFile(): 
    file = filedialog.askopenfile(parent=main_window, mode='rb', title='Select a file') 
    contents = file.read() 
    textArea.delete('1.0', END) 
    textArea.insert('1.0', contents) 
    file.close() 

をここでは、ユーザは、彼が開くしたいファイルを選択するためのダイアログを取得します。しかし、彼が選んだファイルのファイル名はどうやって取得できますか?

def saveFileas(): 
    file = filedialog.asksaveasfile(mode='w') 
    data = textArea.get('1.0', END+'-1c') 
    file.write(data) 
    file.close() 

ここで、ユーザーはファイルを保存するダイアログを表示し、必要な名前を入力します。ここでも、ユーザーが入力する名前が必要です。どちらも既定のウィンドウopensaveダイアログを使用しています。

はここにすべての私のコードです:

from tkinter import Tk, scrolledtext, Menu, filedialog, END 

main_window = Tk(className = " Text Editor") 
textArea = scrolledtext.ScrolledText(main_window, width=100, height=80) 

# def newFile(): 
def openFile(): 
    file = filedialog.askopenfile(parent=main_window, mode='rb', title='Select a file') 
    contents = file.read() 
    textArea.delete('1.0', END) 
    textArea.insert('1.0', contents) 
    file.close() 


def saveFileas(): 
    file = filedialog.asksaveasfile(mode='w') 
    data = textArea.get('1.0', END+'-1c') 
    file.write(data) 
    file.close() 

def saveFile(): 
    content = textArea.get('1.0', END+'-1c') 
    if content: 
     print("There is content") 
    else: 
     print("There is no content") 


#Menu options 
menu = Menu(main_window) 
main_window.config(menu=menu) 
fileMenu = Menu(menu) 
menu.add_cascade(label="File", menu=fileMenu) 
fileMenu.add_command(label="New") 
fileMenu.add_command(label="Open", command=openFile) 
fileMenu.add_command(label="Save As", command=saveFileas) 
fileMenu.add_command(label="Save", command=saveFile) 
fileMenu.add_separator() 
fileMenu.add_command(label="Print") 
fileMenu.add_separator() 
fileMenu.add_command(label="Exit") 

textArea.pack() 

main_window.mainloop() 

答えて

0

documentationは1を選択した場合、そのaskopenfileは、ファイル名を返す意味すると思われる、または空の文字列を、ユーザーがクリックした場合はキャンセル。言い換えれば、それは文字列であり、ファイルポインタではありません。最初にファイルを開く必要があります。

1

このようなものは、ファイル名を取得するためにはうまくいくはずです。

from tkinter import filedialog 
    root = Tk() 
    root.filename = filedialog.askopenfilename(initialdir = "Path Where the dialog should open first",title = 
    "Title of the dialog",filetypes = (("jpeg files","*.jpg"),("all files","*.*"))) 
    print (root.filename) 
    root.withdraw() 
-1

askopenfileはブライアンオークリーのようなファイルオブジェクトのハンドルを返します。あなたがそうのようなファイル名を取得することができます言った:ファイルオブジェクトではなく、パスにハンドルを返しますaskopenfile` `

filePath = filedialog.askopenfile(parent=main_window, mode='rb', title='Select a file') 
fileName = filePath.name.split('/').pop() 
+0

。コードでエラーが発生します。 –

+0

私はそれをテストしたときに奇妙なエラーをスローしませんでした。 – Iseis

+0

ああ私はaskopenfilename私の間違いを使用していた心配しないでください。 – Iseis

関連する問題