Open1
Fletをデスクトップアプリにビルドしたときのカレントディレクトリ

Fletをflet build windows
コマンドでネイティブアプリとしてビルドしたときに、ファイルの出力場所がわからなくて調べた話。
※Windowsの話です。
コード内では出力先を./sample_output.wav
という指定をしていました。
flet run
で普通に実行する場合には問題ないのですが、いざビルドすると挙動が変わりました。
相対パスで指定しているので直感では実行ファイルと同じ階層にできそうですが、実際はC:\Users\[ユーザー名]\AppData\Roaming\Flet\[Fletのアプリ名]\flet\app\
内にsample_output.wav
が作成されていました。
以下のようなコードをビルドしてみると、認識されているカレントディレクトリが実行ファイルの場所とは異なるのがわかります。
main.py
import flet as ft
from pathlib import Path
def main(page: ft.Page):
dir = ft.Text(value=str(Path.cwd()))
page.add(dir)
ft.app(main)
実用的にアプリを作るには、ft.FilePicker
などを使用してユーザーに明示的に保存場所を指定させたり、Path.home()
を使ってホームディレクトリを利用するとよさそう。