前提
MaxOSでpyinstallerを使ってcsvファイルを作成する実行ファイルを作成しました。
プログラムは以下の通りです。
python
1import csv 2 3li = [[1,2,3,4],[5,6,7,8]] 4with open('sample.csv', 'w') as f: 5 writer = csv.writer(f) 6 writer.writerows(li)
ディレクトリ構造は以下のようになっています。
(directory)/ ├── build │ └── main │ ├── Analysis-00.toc │ ├── EXE-00.toc │ ├── PKG-00.pkg │ ├── PKG-00.toc │ ├── PYZ-00.pyz │ ├── PYZ-00.toc │ ├── base_library.zip │ ├── warn-main.txt │ └── xref-main.html ├── dist │ └── main ├── main.py └── main.spec
このdistディレクトリに入っているmainをターミナルソフト上で例えば以下のように
(directory)/dist/上で
$ ./main
とするとsample.csv
がカレントディレクトリ上で作成できるのですが、
finderやDesktop上でファイルをダブルクリックして実行すると作成されません。
ちなみにファイルのパーミッションは以下のようになっています
-rwxr-xr-x@ (省略)
試したこと
pyinstaller main.py --onefile --debug all
をしてログの確認などもしたのですが解決方法が分からず困っています。
どなたか解決できる方はいますでしょうか?
追記
カレントディレクトリを出力するようにプログラムを改変したら解決しました。
実際にはホームディレクトリに作成されていました。
finderの基本設定がホームディレクトリになっていたのが原因でした。
ただ、今回実現したいこととしては実行したディレクトリ上にsample.csvを作成したいのですが、
実行したディレクトリ内に作成するようにプログラム上で記述するにはどのようにすればいいのでしょうか。
python
1import os 2import csv 3 4li = [[1,2,3,4],[5,6,7,8]] 5 6cpath = os.getcwd() 7save_path = os.path.join(cpath, 'sample.csv') 8with open(save_path, 'w') as f: 9 writer = csv.writer(f) 10 writer.writerows(li)
上記のようにプログラムを改変したのですが、変数save_pathはホームディレクトリを指定しているようです。
これは変えられないのでしょうか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。