我目前有一个Python文件,需要在父目录中导入另一个Python文件。问题是我要导入的文件的名称以数字开头。
文件的结构如下:
parent/
├── 123.py
└── child/
└─── my_file.py
我想导入 123.py 文件,有没有办法实现这个目标?
答案 0 :(得分:3)
没有。这不是一个有效的Python模块名称。从字母开始称之为别的东西。
答案 1 :(得分:1)
之前的答案是一个很好的建议,如果你命名一个模块/变量,你不应该用数字来启动它。但是如果你必须导入一个名为这样的模块,它仍然是可能的。
例如,要从模块x
访问变量123.py
:
>>> from importlib import import_module
>>> onetwothree = import_module('123')
>>> onetwothree.x
关于问题的其他部分,模块位于父目录中,您可以先将该目录附加到sys路径:
>>> import sys
>>> sys.path.append('path/to/dir')
答案 2 :(得分:0)
Read more about naming conventions from PEP 8
上面提到过,将模块命名为数字并不是一个好处,因为它会使事情变得比它们应该更复杂。 PEP 8还建议命名为小写,使用下划线来提高可读性。 PEP 8不是一套规则,而是指导方针。如果您需要将模块名称作为数字,那么您可以按照Lgiro的答案进行操作。
您可以导入的另一种方法是使用__init__.py
文件和相对导入。
parent/
├──__init__.py
├── parent.py
└── child/
├───__init__.py
└─── child.py
然后在child.py
from .. import parent