0

私は通常、Python スクリプト内で作成された xls ファイルをハード ドライブに保存します。たとえば、これは通常、パンダの場合は非常に簡単なことです。

私の問題は、py2app でコンパイルされたスクリプトからこれを達成しようとしていることです。easyguiを使ってファイルの保存先(どのフォルダ)を聞いてみたのですが、どうしたらいいのかわからず、アプリにコンパイルしたら最後にクラッシュしてしまいます。

これが私が試みたものです:

path = easygui.diropenbox() #Easygui is used to get a path in order to save the file to the right place
dfA = pd.DataFrame(A) #the pandas dataframe
C = ['Gen','Density','ASPL','Modularity'] # pandas' excel file header
name = str(n) + "_" + str(NGEN) + "_" + str(nbrhof) + ".xls" # the name of the file (should I add the path here somewhere?)
dfA.to_excel(name, path, header=C,index=False) # exporting the dataframe to excel

このスクリプトを変更して、py2app でコンパイルされたアプリから、「name」という名前の Excel ファイルを「easygui.diropenbox()」で選択したフォルダーに保存できますか?

トレースバックは次のとおりです。

Traceback (most recent call last):
File "/Users/myself/Dropbox/Python/Tests/test2/myscript.py", line 135, in <module>
nx.write_gexf(G, path, name+".gexf")
File "<string>", line 2, in write_gexf
File "/Library/Python/2.7/site-packages/networkx-1.8.1-py2.7.egg/networkx/utils/decorators.py", line 241, in _open_file
fobj = _dispatch_dict[ext](path, mode=mode)
IOError: [Errno 21] Is a directory: '/Users/Rodolphe/Desktop/chosenfolder'
[Finished in 65.5s with exit code 1]
[shell_cmd: python -u "/Users/myself/Dropbox/Python/Tests/test2/myscript.py"]
[dir: /Users/Rodolphe/Dropbox/Python/Tests/test2]
[path: /usr/bin:/bin:/usr/sbin:/sbin]
4

1 に答える 1

2

ここに作業バージョンがあります:

import pandas as pd
import easygui
import os

A = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
     'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
dfA = pd.DataFrame(A) #the pandas dataframe

path = easygui.diropenbox() # easygui is used to get a path
name = "tmp.xlsx" # the name of the file
path = os.path.join(path, name)  # this is the full pathname
dfA.to_excel(path, 'tmp_sheet') # exporting the dataframe to excel

このto_excel()メソッドには、書き込んでいる Excel シートへのフル パス名である初期パラメーターがあり、2 番目のパラメーターはワークシートの名前であることに注意してください。

また、スタック トレースがスクリプトの別の部分を参照しているようで、別のバグを指している可能性があります。

于 2013-12-10T12:35:40.497 に答える