2009-12-09 7 views
3

J'ai un module python qui génère de gros fichiers de données que je veux mettre en cache sur le disque pour une utilisation future. Le cache est susceptible de se terminer à quelques centaines de Mo pour un utilisateur normal, mais économiser beaucoup de temps de calcul.cache de données pour le paquet python

Les fichiers ne sont pas distribués avec le module, mais sont générés la première fois que le code est exécuté avec un ensemble de paramètres donné. Jusqu'à présent, je n'utilisais qu'un seul module de fichier et je les plaçais dans un chemin codé en dur par rapport au module (data /). Mais j'ai maintenant besoin de distribuer ce module dans un paquet Python avec distutils et je me demandais s'il y avait une façon standard de le faire. Je pensais à quelque chose comme le cache compilé de scipy.weave - mais je me demandais s'il y avait une façon plus moderne de le faire. Sur les plates-formes * nix, je m'attendrais à ce qu'il entre dans ~/.something mais je ne suis pas sûr de ce que l'équivalent de Windows serait. Cela devrait également être configurable pour que les utilisateurs puissent le pointer ailleurs si c'est plus pratique, ou pour partager le répertoire cache entre les utilisateurs. Comment un tel fichier de configuration devrait-il fonctionner? Où devrait-il aller?

Ou devrais-je simplement l'avoir en tant qu'option d'installation, soit via un fichier de configuration à côté de setup.py, soit en éditant manuellement setup.py, puis coder le répertoire dans le module avant l'installation?

Tous les pointeurs greatfully reçus ...

Répondre

3

Vous pouvez utiliser le module de bibliothèque standard ConfigParser pour analyser un fichier ini (ou fichier .rc en fonction de votre culture). Pour trouver le fichier, os.path.expanduser est une fonction utile qui fait la bonne chose sur toutes les plates-formes pour les chemins comme "~/.mytoolrc". Pour laisser l'utilisateur remplacer l'emplacement des choses, vous pouvez utiliser les variables d'environnement via os.environ.

+0

Merci - donc je suppose que par défaut à un répertoire ~/.mycache ou ~/_mycache. Recherchez un fichier de configuration ~/.my_module ou ~/_my_module et, s'il est présent, récupérez le répertoire. Ensuite, la valeur par défaut devrait fonctionner pour la plupart des gens, mais elle est facile à configurer. Je préférerais éviter les variables d'environnement car je ne pense pas que les gens de Windows aiment généralement avoir à régler des choses comme ça. – robince

Questions connexes