0

Python 2.7.3で次のコードを使用して、Excelファイルを開いてデータを書き込むことができません。このコードの何が問題になっていますか?

def openfile():
    import os
    f=open('ab.xls', 'w')
    return

import Tkinter
from Tkinter import *
root=Tk()
root.geometry('100x100+100+100')

button1=Button(root, text='Open file', command=openfile)
button1.pack()

root.mainloop()

ありがとう

4

4 に答える 4

2
  1. 関数内に置くimport osということは、関数を実行するまでインポートされないことを意味します...おそらくあなたが望むものではありません。

  2. ファイルを開きますが、ハンドルを返すことはありません。に置き換えreturnてみてくださいreturn f

  3. を使用している場合はimport xlwt、とにかくこれは必要ありません。ファイルへの書き込みを処理します。ユーザー入力(Pythonから)をExcelワークシートにエクスポートする方法に関する以前の回答を参照してください。

編集:

...'ab.xls'が開かれ、ハンドルを返した後、何もしません。正確には、何を期待していましたか?

試す

import Tkinter as tk

def do_something_with_file():
    with open('ab.xls', 'w') as f:
        print("The file is open")
        # --> now DO SOMETHING with it <--

root = tk.Tk()
root.geometry('100x100+100+100')
button1 = tk.Button(root, text='Open file', command=do_something_with_file)
button1.pack()
root.mainloop()
于 2012-06-18T22:57:27.913 に答える
2

この文脈でオープンが何を意味するかについてあなたは混乱しているようです。open()Pythonでファイルハンドルを返す関数であるため、データをアプリケーションに読み込むことができます。

そのファイルタイプのシステムのデフォルトプログラムでファイルを開きたい場合は、os.startfile()を調べてください。

于 2012-06-18T23:56:20.017 に答える
1

「f」変数は、ローカル変数であるファイルオブジェクトです(「openfile」関数が終了するとすぐに破棄されます)。fをグローバルとして宣言するか、openfile関数でファイルオブジェクトを返すことができます。

于 2012-06-18T22:58:54.340 に答える
-1

このコードには明らかな致命的なエラーは見当たりません。

特にWindowsでこれを実行している場合、ファイルはおそらくExcelや独自のコードなど、別の場所で開いていますか?ファイルがすでに他の場所で書き込み用に開いている場合、書き込み用にファイルを開くことはできません。

于 2012-06-18T22:49:23.570 に答える