gpt4 book ai didi

python从两个目录文件中导入一个

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:46 24 4
gpt4 key购买 nike

例如:

 Files/ 
main.py
SubFileA/
__init__.py "from util1 import help"
util1.py "def help(): print ...A..."
SubFileB/
__init__.py "from util1 import help"
util1.py "def help(): print ...B..."

SubFileA和SubFileB中的util1.py内容不同。

我希望用户可以通过某种方式指定要导入的 util1.py。

我期待这样的事情:

  if subFileA:
from SubFileA import *
else:
from SubFileB import *

util1.py 具有相同的 API,但实现不同。

我这样做的原因是,如果我将两个 util1.py 组合在一起,代码将变得丑陋且难以维护。希望任何人都可以给我一个解决方案,或者任何建议都会很棒!

我尝试了这些代码,但收到了警告(它确实有效,但警告令人尴尬):

main.py:4: SyntaxWarning: import * only allowed at module level
def main():
main.py:4: SyntaxWarning: import * only allowed at module level
def main():

大家。我想我找到了解决方案。但我认为这不是好的编程风格。

Files/
main.py "from directory import *"
directory/
__init__.py
"user=raw_input()
if user:
from directoryA import *
else
from directoryB import * "
directoryA/
__init__.py "from util1 import help1()"
util1.py
directoryB/
__init__.py "from util1 import help1()"
util1.py

确实,这看起来很奇怪。但它完成了工作。

最佳答案

您需要将每个目录打包为 from <package> import ...工作的语法。要告诉 Python 一个目录是一个包,只需创建一个空的 __init__.py每个目录中的文件。

如果您希望根据 util1 的版本执行特定行为是导入的,你可以在每个 __init__.py 中编写初始化代码文件。

有关更多信息,请查看 official documentation on packages .


最终,您的新项目目录树应如下所示:

Files/ 
main.py
SubFileA/
__init__.py
util1.py
SubFileB/
__init__.py
util1.py

关于python从两个目录文件中导入一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com