Where to store the configuration files of python applications on Windows

Storing settings in the user directory is usually a good idea.

These days, you should probably use something like the appdirs library to find a good path to store your configuration in.

Under most Unices, just store a (preferably dot-prefixed) file in the home directory. Under OS X, you’d want to create a directory for your application in the user’s Library folder, and store your files there. Under Windows, APPDATA is a good place to build a directory in for your application. It should work on all Windows localizations, and it looks like it was also available in Windows XP.


There is a better solution now … better than speculating about what is best on each platform, better than environment variables which may or may not be defined, and even better than appdirs: platformdirs (GitHub, PyPI Snyk).

import platformdirs appname = 'OurGreatApp' print(f"User config files should be stored in {platformdirs.user_config_dir(appname)}") 

On Linux, it is common to store the configuration file in the users home directory, for instance ~/.myprogramrc. On windows Vista and up, users have a home directory as well (/Users/username) and a would recommend storing your settings there in a subfolder (/Users/useranem/myprogram). Storing the settings in the application folder will generate UAC warnings.

On Windows XP, users do not have a home folder. Some programs make the choice of putting configuration in the ‘My Documents’ folder which I guess is as good a place as any.