请帮我解释如何将脚本保存在单个文件夹中,因为我在Script2中导入Script1时遇到了问题。以下是两个脚本。
Script1:Variable.sikuli
PID = "r'C:\Program Files (x86)\Microsoft Office\Office14\outlook.exe'"
当我保存脚本(Variable.sikuli)时,默认情况下它将在“Variable.py”和“Variable.html”中创建一个文件夹“Variable.sikuli”
Script2:openMO.sikuli
def openMO():
openApp(PID) # PID will taken from Variable.sikuli
openMO()
当我保存脚本(openMO.sikuli)时,默认情况下会在“openMO.py”和“openMO.html”中创建一个文件夹“openMO.sikuli”
现在我的问题是:
答案 0 :(得分:0)
我认为您不应该或可以将多个Sikuli脚本放在一个文件夹中,以使它们彼此可见。通常,包含要导入的.sikuli的目录/文件夹必须位于sys.path
中。 Sikuli在导入时会自动在同一目录中找到其他Sikuli脚本。导入的脚本必须包含(作为第一行)以下语句:
from sikuli import *
这对于Python环境来说必须知道Sikuli类,方法,函数和全局名称。
以下是一个例子
# on Windows
myScriptPath = "c:\\someDirectory\\myLibrary"
# on Mac/Linux
myScriptPath = "/someDirectory/myLibrary"
# all systems
if not myScriptPath in sys.path: sys.path.append(myScriptPath)
# supposing there is a myLib.sikuli
import myLib
# supposing myLib.sikuli contains a function "def myFunction():"
myLib.myFunction() # makes the call
有更多信息here。
答案 1 :(得分:0)
也许有点迟到的答案,但如果你想导入像另一个文件的路径之类的东西,你也可以尝试使用全局变量。
不建议将多个脚本放在一个.sikuli文件夹中。
如果你的脚本/程序变得更大,它可能会变得非常混乱。
使用全局变量,您可以创建一个可以在整个脚本中使用的变量。
当您在python中导入文件时,它会立即运行该类,并设置变量。
如果在脚本A中定义全局变量,然后让脚本B导入脚本A.那么脚本B也知道脚本A的全局变量是什么样的。
要在定义中设置或使用全局变量,您必须首先使用以下方法调用它:" global variableName"
我在下面有一些示例代码可能会让事情变得更清晰。
文件:BrowserPath.sikuli
# Define a Global variable
PathFireFox = ''
class Fire():
def __init__(self):
global PathFireFox
PathFireFox = r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
# Run Fire()
Fire()
文件:BrowserMain.sikuli
# Import other class.
from BrowserPath import *
class Main():
def __init__(self):
global PathFireFox
App.open(PathFireFox)
# Run Main class
Main()