gpt4 book ai didi

python - 使用 python 在 Squish 中导入文件

转载 作者:行者123 更新时间:2023-12-01 02:32:32 24 4
gpt4 key购买 nike

如果两个文件具有相同名称的函数,则在脚本中使用 source(findFile()) 导入它们并调用它来访问最后关联的文件中的函数。如何访问特定文件中的函数?挤压python 支持导入文件语法吗?

这是一个引用

script_1.py

def runner1():
test.log("Hey")

script_2.py

def runner1():
test.log("Bye")

脚本:

source(findFile("scripts","script_1.py"))
source(findFile("scripts","script_2.py"))


runner1()//function call

O/P:再见

注意:当我使用文件名导入时,它会抛出错误“模块不存在”

最佳答案

source()导致指定文件中的“符号”(函数、变量)加载到 test.py 文件的命名空间/范围中。这意味着 source() 不是解决此问题的错误工具。

(使用 Orip 展示的技巧,将函数分配给第一个 source() 之后的另一个符号/名称,我建议不要这样做,因为依赖于初始名称下可用的所需函数的其他代码会调用错误最终发挥作用。)

使用 Python 的 import 语句,您可以通过将文件视为 Python 模块来实现函数位于单独的命名空间中。为此,您必须将包含所需文件的目录路径包含到 Python 自己的“搜索路径”中 - sys.path :

suite_mine/tst_testcase1/test.py 的内容:

# -*- coding: utf-8 -*-

import os.path
import sys

# Add path to our modules to the Python search path at runtime:
sys.path.append(os.path.dirname(findFile("scripts", "file1.py")))
sys.path.append(os.path.dirname(findFile("scripts", "file2.py")))

# Now import our modules:
import file1
import file2


def main():
# Access functions in our modules:
file1.do_it()
file2.do_it()

suite_mine/tst_testcase1/file1.py 的内容:

# -*- coding: utf-8 -*-

import test


def do_it():
test.log("file1.py")

suite_mine/tst_testcase1/file2.py 的内容:

# -*- coding: utf-8 -*-

import test


def do_it():
test.log("file2.py")

生成的日志条目:

file1.py
file2.py

关于python - 使用 python 在 Squish 中导入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46643783/

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