Je début avec Python et ce language est vraiment très agréable.
Je réalise un petit jeu d'arcade que je souhaite multi-plateforme
(j'utilise pygame).
Avoir avoir dégrossit le jeu en lui même, je m'occupe des réglages
utilisateurs et mémoire des scores.
Je souhaite fournir une solution Mac, Windows et Linux.
A priori je stocke tout ça dans un fichier de config.
Mes questions, d'ordre général concerne la meilleure façon (ou plus
orthodoxe) de gérer ce fichier.
Sur Mac il est de bon ton de la stocker dans un répertoire spécial de
l'utilisateur courant (/users/xxx/Library/Preferences), avec Windows et
Linux plutot dans un fichier config directement avec le logiciel ?
Mais comment détecter la plateforme et comment appréhender les problèmes
de droits, notamment avec Mac et Linux. Comment retrouver le chemin par
défaut pour chaque OS...
Comment avez vous résolu ce genre de cas ? Qu'elle serait la meilleure
solution.
Merci de toutes pistes.
--
Pierre-Alain Dorange
Vidéo, DV et QuickTime <http://www.garage-video.com/>
Clarus, the DogCow <http://clarus.chez.tiscali.fr/>
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bruno Desthuilliers
Pierre-Alain Dorange a écrit :
Je début avec Python et ce language est vraiment très agréable.
Je réalise un petit jeu d'arcade que je souhaite multi-plateforme (j'utilise pygame). Avoir avoir dégrossit le jeu en lui même, je m'occupe des réglages utilisateurs et mémoire des scores. Je souhaite fournir une solution Mac, Windows et Linux. A priori je stocke tout ça dans un fichier de config.
Tout dans le même ? les scores et la config ?
Mes questions, d'ordre général concerne la meilleure façon (ou plus orthodoxe) de gérer ce fichier. Sur Mac il est de bon ton de la stocker dans un répertoire spécial de l'utilisateur courant (/users/xxx/Library/Preferences), avec Windows et Linux plutot dans un fichier config directement avec le logiciel ?
Sous nunux, l'"orthodoxie" consiste à stocker ce genre de choses dans un fichier ou répertoire "caché" dans le répertoire de l'utilisateur. Un fichier (ou un répertoire...) est "caché" si son nom commence par un "." - par exemple, ma config utilisateur pour emacs (mon éditeur de code) est dans le fichier /home/bruno/.emacs, et toutes les données et prefs de mon mailer (thunderbird) sont dans le répertoire /home/bruno/.mozilla-thunderbird.
Mais comment détecter la plateforme
>>> import os >>> os.name 'posix' >>> os.uname() ('Linux', 'bruno', '2.6.20-16-386', '#2 Tue Feb 12 05:38:06 UTC 2008', 'i686') >>>
NB : sous MacOS X, le premier élément du tuple renvoyé par os.uname() sera 'Darwin'
et comment appréhender les problèmes de droits, notamment avec Mac et Linux.
D'abord, rappelle-toi que MacOS est un unix aussi. Même si les conventions de nommage et d'organisation de l'arbo du filesystem sont parfois différente, sur le fond, le principe reste le même: - les prefs et autres données de fonctionnement sont stockées dans le répertoire de l'utilisateur - l'utilisateur à le droit de lire et écrire dans son répertoire - le programme s'exécute (par défaut) avec les droits de l'utilisateur - donc le programme a le droit de lire et écrire dans le répertoire de l'utilisateur qui l'a lancé.
En bref : *quels* problèmes de droit ?
Comment retrouver le chemin par défaut pour chaque OS...
Sur un système posix (donc sur MacOS X et linux), os.path.expanduser('~') te donnera la racine du répertoire de l'utilisateur courant (celui qui a lancé le programme).
Pour ce qui est de Windows, il faudra demander à quelqu'un d'autre - perso, je n'utilise pas ça.
Dernier point: si tu débutes avec Python, tu ne le sait peut-être pas, mais tu peux faire des définitions conditionnelles, au top-level d'un module ou dans une classe, ie:
import os
if os.name == 'posix': import my.posix.module as mymodule def do_this(): print "posix version" elif os.name == 'nt': import my.nt.module as mymodule def do_this(): print "nt version" else: import my.wtf.module as mymodule def do_this(): print "WTF ???"
if os.name=="posix": class Bar(object): # posix implementation
elif os.name=="nt": class Bar(object): # nt implementation
else: class Bar(object): # whatever implementation
etc...
Pierre-Alain Dorange a écrit :
Je début avec Python et ce language est vraiment très agréable.
Je réalise un petit jeu d'arcade que je souhaite multi-plateforme
(j'utilise pygame).
Avoir avoir dégrossit le jeu en lui même, je m'occupe des réglages
utilisateurs et mémoire des scores.
Je souhaite fournir une solution Mac, Windows et Linux.
A priori je stocke tout ça dans un fichier de config.
Tout dans le même ? les scores et la config ?
Mes questions, d'ordre général concerne la meilleure façon (ou plus
orthodoxe) de gérer ce fichier.
Sur Mac il est de bon ton de la stocker dans un répertoire spécial de
l'utilisateur courant (/users/xxx/Library/Preferences), avec Windows et
Linux plutot dans un fichier config directement avec le logiciel ?
Sous nunux, l'"orthodoxie" consiste à stocker ce genre de choses dans un
fichier ou répertoire "caché" dans le répertoire de l'utilisateur. Un
fichier (ou un répertoire...) est "caché" si son nom commence par un "."
- par exemple, ma config utilisateur pour emacs (mon éditeur de code)
est dans le fichier /home/bruno/.emacs, et toutes les données et prefs
de mon mailer (thunderbird) sont dans le répertoire
/home/bruno/.mozilla-thunderbird.
Mais comment détecter la plateforme
>>> import os
>>> os.name
'posix'
>>> os.uname()
('Linux', 'bruno', '2.6.20-16-386', '#2 Tue Feb 12 05:38:06 UTC 2008',
'i686')
>>>
NB : sous MacOS X, le premier élément du tuple renvoyé par os.uname()
sera 'Darwin'
et comment appréhender les problèmes
de droits, notamment avec Mac et Linux.
D'abord, rappelle-toi que MacOS est un unix aussi. Même si les
conventions de nommage et d'organisation de l'arbo du filesystem sont
parfois différente, sur le fond, le principe reste le même:
- les prefs et autres données de fonctionnement sont stockées dans le
répertoire de l'utilisateur
- l'utilisateur à le droit de lire et écrire dans son répertoire
- le programme s'exécute (par défaut) avec les droits de l'utilisateur
- donc le programme a le droit de lire et écrire dans le répertoire de
l'utilisateur qui l'a lancé.
En bref : *quels* problèmes de droit ?
Comment retrouver le chemin par
défaut pour chaque OS...
Sur un système posix (donc sur MacOS X et linux),
os.path.expanduser('~') te donnera la racine du répertoire de
l'utilisateur courant (celui qui a lancé le programme).
Pour ce qui est de Windows, il faudra demander à quelqu'un d'autre -
perso, je n'utilise pas ça.
Dernier point: si tu débutes avec Python, tu ne le sait peut-être pas,
mais tu peux faire des définitions conditionnelles, au top-level d'un
module ou dans une classe, ie:
import os
if os.name == 'posix':
import my.posix.module as mymodule
def do_this():
print "posix version"
elif os.name == 'nt':
import my.nt.module as mymodule
def do_this():
print "nt version"
else:
import my.wtf.module as mymodule
def do_this():
print "WTF ???"
Je début avec Python et ce language est vraiment très agréable.
Je réalise un petit jeu d'arcade que je souhaite multi-plateforme (j'utilise pygame). Avoir avoir dégrossit le jeu en lui même, je m'occupe des réglages utilisateurs et mémoire des scores. Je souhaite fournir une solution Mac, Windows et Linux. A priori je stocke tout ça dans un fichier de config.
Tout dans le même ? les scores et la config ?
Mes questions, d'ordre général concerne la meilleure façon (ou plus orthodoxe) de gérer ce fichier. Sur Mac il est de bon ton de la stocker dans un répertoire spécial de l'utilisateur courant (/users/xxx/Library/Preferences), avec Windows et Linux plutot dans un fichier config directement avec le logiciel ?
Sous nunux, l'"orthodoxie" consiste à stocker ce genre de choses dans un fichier ou répertoire "caché" dans le répertoire de l'utilisateur. Un fichier (ou un répertoire...) est "caché" si son nom commence par un "." - par exemple, ma config utilisateur pour emacs (mon éditeur de code) est dans le fichier /home/bruno/.emacs, et toutes les données et prefs de mon mailer (thunderbird) sont dans le répertoire /home/bruno/.mozilla-thunderbird.
Mais comment détecter la plateforme
>>> import os >>> os.name 'posix' >>> os.uname() ('Linux', 'bruno', '2.6.20-16-386', '#2 Tue Feb 12 05:38:06 UTC 2008', 'i686') >>>
NB : sous MacOS X, le premier élément du tuple renvoyé par os.uname() sera 'Darwin'
et comment appréhender les problèmes de droits, notamment avec Mac et Linux.
D'abord, rappelle-toi que MacOS est un unix aussi. Même si les conventions de nommage et d'organisation de l'arbo du filesystem sont parfois différente, sur le fond, le principe reste le même: - les prefs et autres données de fonctionnement sont stockées dans le répertoire de l'utilisateur - l'utilisateur à le droit de lire et écrire dans son répertoire - le programme s'exécute (par défaut) avec les droits de l'utilisateur - donc le programme a le droit de lire et écrire dans le répertoire de l'utilisateur qui l'a lancé.
En bref : *quels* problèmes de droit ?
Comment retrouver le chemin par défaut pour chaque OS...
Sur un système posix (donc sur MacOS X et linux), os.path.expanduser('~') te donnera la racine du répertoire de l'utilisateur courant (celui qui a lancé le programme).
Pour ce qui est de Windows, il faudra demander à quelqu'un d'autre - perso, je n'utilise pas ça.
Dernier point: si tu débutes avec Python, tu ne le sait peut-être pas, mais tu peux faire des définitions conditionnelles, au top-level d'un module ou dans une classe, ie:
import os
if os.name == 'posix': import my.posix.module as mymodule def do_this(): print "posix version" elif os.name == 'nt': import my.nt.module as mymodule def do_this(): print "nt version" else: import my.wtf.module as mymodule def do_this(): print "WTF ???"