2016-09-30 6 views
0

は、のpython TkinterのtkFileDialog要するに

tkFileDialog.asksaveasfile 

tkFileDialog.asksaveasfilename 

違い何私は、ドキュメントにビルドから理解できませんでした

+0

プログラムの学習には少しの実験が必要です。あなたはこれらの関数のそれぞれを実行する小さなプログラムを書くことができ、実際に何が起こるのかを見ることができます。 –

答えて

4

asksaveasfile、その後、ファイルをユーザーに要求しますそのファイルを書き込みモードで開き、それを書き込みます。

asksaveasfilenameは、ユーザーにファイルを尋ね、そのファイルの名前を返します。ファイルは開かれていません。ファイルに書きたい場合は、自分で開く必要があります。

asksaveasfilenameasksaveasfileの方が、データを書き込むよりもファイルに魅力的なことをしたいと思うかもしれません。たとえば、ファイルを別のディレクトリにバックアップとしてコピーすることができます。この場合、ファイル名を取得して、ファイルを開いてコピーが失敗するかどうかを気にせずにコピーを実行できるようにすることをお勧めします。

+0

実際には、私は両方の関数がファイル名を求めていることを理解しています。 。 (なぜあなたは 'あなたにファイルを要求しますか?'と言うのはなぜですか?)新しいファイルをユーザーディスクに書きたい場合、asksaveasfileを優先する必要がありますか? – user3599803

+0

@ user3599803:Tkinterの 'asksaveas ...'関数は、ユーザーが既存のファイルを選択できるようにしますが、そうした場合、ファイルを上書きするかどうかを尋ねる警告がポップアップします。それを試して&参照してください! –

+0

@Kevinファイルが '' w''モードで開かれたら、既に切り詰められています。したがって、 'asksaveasfile'を使用すると、バックアップするチャンスはありません。おはようございます。 –

2

http://tkinter.unpythonic.net/ウィキによると

類似:

まずあなたがファイルを開くか、ファイル名だけを取得したい場合は、あなたの上のファイルを開くために決定する必要があります自分の。最初のケースでは、tkFileDialog.askopenfilename()tkFileDialog.askopenfile()を使用してください。その後、

保存するファイルは、同じように動作します。また、ファイルを開くためのファイルと、ファイルを開くためのファイル名を取得するための別のファイルの2種類があります。これらの機能は、単一のファイルバージョンでのみ提供されます。複数のファイルバージョンは意味をなさないでしょう。

+0

ユーザディスクに新しいファイルを書きたいのですが、ダイアログではそれをフォルダに保存させるだけです – user3599803

関連する問題