2017-02-26 6 views
-1

En Python 3.6, j'essaie de créer une base de données appelée test.db dans le répertoire personnel de l'utilisateur actuel. Actuellement, je reçois ce répertoire avec home = os.path.expanduser("~") (après l'importation os). Mon problème est que lorsque je cours s = shelve.open(home + "/test") il crée le fichier en /path/to/current/python/file/Users/USERNAME/test.db. Existe-t-il un moyen de mettre en attente une base de données par un chemin absolu, par ex. /Users/USERNAME/test.db? Aussi, puis-je le faire croiser la plate-forme; Windows nécessiterait shelve.open(home + "\test") et Mac/Linux nécessiterait shelve.open(home + "/test")? Merci.Base de données de base de données en chemin absolu

+0

Pourquoi downvote? –

+0

Je n'ai pas downvote, mais je pense qu'il devrait y avoir un script de démo ici. Votre code devrait fonctionner. Je ne sais pas ce que '/ path/to/python/file' est ... est-ce le chemin de votre script python ... et vous n'êtes pas dans ce répertoire? Mais un script court avec quelques tirages le rendrait plus clair. – tdelaney

Répondre

1

Pour le rendre multi-plateforme, utilisez os.path.join() pour rejoindre les chemins

import os, shelve 
path = os.path.join(os.path.expanduser("~"), 'test') 
shelve.open(path) 
+0

Si je tapais 'test.db', ​​cela créerait un fichier appelé' test.db.db'. –