63378


Windowsでは、ユーザーの設定ファイルを保存する場合、%APPDATA%というパスに保存するようなのですが、そのパスをPythonを取得しようと思ったら以下のようにgetenvで取得できるようです。

[code]

    import os
    APPNAME = 'testFolder'
    os.path.join(os.getenv('APPDATA'),APPNAME)
    
[/code]

Macの場合では、Winの%APPDATA%にあたるユーザーの設定ファイル等の保存場所がLibrary/Application
Supportフォルダにあたるらしいのですが、このパスを取得するにはどうするのが良いですか？

Macの場合でもgetenv等で取得できますか？


CC BY-SA 4.0
2020-02-25T02:43:59.827
63333
2020-02-26T11:38:58.623
2020-02-25T02:54:02.120
3060
36446
question
python macos
PythonでMacの、Library/Application Supportフォルダのパスを取得する方法


取得できません。  
`getenv`は単に環境変数の値を取得するだけに過ぎず、Macでは`~/Library/Application
Support`に対する環境変数は設定されていません。

WindowsでもMacでも稼働するプログラムを作成中なら、OSを判定して各OS毎のパスを設定するなどするしかないと思います。

なおOS判定は次のように実現できます。

[code]

    import platform
    
    print(platform.system()) #=> 'Windows' or 'Darwin' or 'Linux'
    
[/code]


CC BY-SA 4.0
2020-02-25T05:55:30.887
63340
2020-02-25T05:55:30.887
9608
63333
answer


自分では試せていませんが書いておきます。  
やはり macOS ではそういう環境変数は存在せず、通常 Swift で
[FileManager](https://developer.apple.com/documentation/foundation/filemanager)
クラスを呼び出して取得するようです。  
本家SO: [Programatically get path to Application Support
folder](https://stackoverflow.com/a/39719123).  
公式ドキュメント: [macOS Library Directory
Details](https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/MacOSXDirectories/MacOSXDirectories.html)

Python で Foundation フレームワークの FileManager クラスを使うのは PyObjC とか [pyobjc-framework-
Cocoa](https://pypi.org/project/pyobjc-framework-Cocoa/)を使うそうです。

フォルダパスを得たいだけなのにパッケージを新たにインストールするのはやりすぎな気もします…


CC BY-SA 4.0
2020-02-26T11:38:58.623
63378
2020-02-26T11:38:58.623
5469
63333
answer