En python, comment faire pour importer le nom de fichier commence par un certain nombre
Il y a un fichier appelé 8puzzle.py
et je veux importer le fichier dans un autre fichier (dans le même dossier et je ne peux pas changer le nom de fichier que le fichier est fourni). Est-il de toute façon à le faire en Python? J'ai essayé de la manière habituelle from 8puzzle import *
, il me donne une erreur.
D'erreur est:
>>> import 8puzzle
File "<input>", line 1
import 8puzzle
^
SyntaxError: invalid syntax
>>>
- Pourquoi les gens disent "il me donne une erreur" puis postez pas quelle est l'erreur?
- C'est une erreur de syntaxe. Je suppose parce que "8puzzle" n'est pas un identificateur valide (il commence par un nombre), et la syntaxe de l'instruction d'importation s'attend à un Python identificateur de là. Ce qui rendrait la réponse "Non, vous ne pouvez pas. Renommer le module de quelque chose qui commence par une lettre ou un trait de soulignement."
- John a fait le bon point, je vais garder à l'esprit. Et merci Abhijeet ajouter le message d'erreur pour moi. Merci.
- Renommer
8puzzle.py
àpuzzle8.py
et l'utilisationimport puzzle8
. - Voir aussi stackoverflow.com/questions/6811902/...
Vous devez vous connecter pour publier un commentaire.
Vous pourriez faire
Très intéressant problème. Je vais m'en souviens pas au nom de quoi que ce soit avec un numéro.
Si vous souhaitez
import *
-- vous devriez découvrez cette question et la réponse.Les réponses ci-dessus sont correctes, mais comme pour l'instant, la méthode recommandée consiste à utiliser
import_module
fonction:__import__
n'est pas recommandé maintenant.De ne pas utiliser le
.py
extension dans vos importations.Ne
from 8puzzle import *
travail?Pour ce que ça vaut,
from x import *
n'est pas un préféré Python, motif, comme il saigne que le module de l'espace de noms dans votre contexte actuel.En général, essayez d'importer des choses que vous souhaitez à partir de ce module. À l'échelle mondiale à partir de l'autre module peut être importés.
par exemple, si vous avez
8puzzle.foo
que vous pourriez faire " de 8puzzle importationEdit:
Alors que mon
.py
message est correct, il n'est pas suffisant.L'autre affiche de la
__import__('8puzzle')
suggestion est correct. Cependant, je recommande fortement d'éviter ce modèle.Pour l'un, il est réservé à un privé interne méthode Python. Vous êtes essentiellement briser les hypothèses fondamentales de ce que signifie être en mesure d'importer un module. Tout simplement en renommant le fichier en quelque chose d'autre, comme
puzzle8
, permettra de remédier à cela.Ce sera d'entraver l'enfer hors d'expérience Python pour les programmeurs qui attendent de savoir ce que les importations sont en haut et attendent le code pour (essayer de) se conformer à PEP8.
from 8puzzle import *
et j'ai édité ma question initiale. Et il ne fonctionne pas comme mvanveen dit.