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