我有一个名为Utility.py
的文件,它是调用一组工具的必备菜单。
在该文件夹中有一个core_fuctions
文件夹,其中包含一个名为powershell_tools
的嵌套文件夹。powershell_tools
内有一个名为test_tools.py
的文件,它是PowerShell工具的菜单。
每个文件夹中都有__init__.py
。当我调用我的实用程序时,它会立即打开test_tools.py文件而不是utility.py菜单。我有一个退出选项,它退出到Utility.py菜单。我不确定为什么它会从它开始的地方开始。
以下是实用程序文件的缩写版本:
from core_functions.powershell_tools import test_tools
import os
os.system("cls")
while True:
print "\n"
print "Select operation."
print ....
print "Press 4 to Use Powershell Tools"
print "Press 5 to Exit"
print "\n"
choice = raw_input("Enter your choice: ")
if choice == "1":
verbose = raw_input("\nWould you like to run in verbose mode? (yes) or no: ")
if verbose == "no":
print "hi"
else:
print "yup"
elif choice == "4":
test_tools()
elif choice == "5":
os.system("cls")
break
else:
os.system("cls")
print "\nPlease enter a valid operation."
continue
这就是当我启动utility.py时我希望删除的菜单。但是,当我启动Utility.py
时,我在test_tools.py文件中被删除了test_tools.py看起来像这样:
from tools.ps_cli import *
from tools.remote_ps_session import *
from tools.ps_clear_remote_dns_cache import *
from tools.ps_get_remote_system_local_users import *
from tools.ps_md5_hash import *
from tools.ps_remote_system_uptime import *
from tools.ps_unlock_account import *
while True:
print "\n"
print "Select operation."
print "Press 1 to test ps_cli.py"
print "Press 2 to test remote_ps_session.py"
print "Press 3 to test ps_clear_dns_cache.py"
print "Press 4 to test ps_get_remote_system_local_users"
print "Press 5 to test ps_md5_hash"
print "Press 6 to test ps_remote_system_uptime"
print "Press 7 to test ps_unlock_account"
print "Press 'a' to exit"
choice = raw_input("Enter your choice: ")
if choice == "1":
ps_cli()
elif choice == "2":
remote_ps_session()
elif choice == "3":
ps_clear_remote_dns_cache()
elif choice == "4":
ps_get_remote_system_local_users()
elif choice == "5":
ps_md5_hash()
elif choice == "6":
ps_remote_system_uptime()
elif choice == "7":
ps_unlock_account()
elif choice == "a":
break
else:
os.system("cls")
print "\n\n\nPlease enter a valid operation."
continue
我无法弄清楚为什么导入导致它启动test_tools并且当我在utility.py中按4时不启动
以下是一些行为截图:
启动Utility.py
按'a'退出(这是事情应该开始的地方):
尝试按4:
返回test_tools.py所以TL; DR就是这个。为什么我的程序直接启动到导入的模块,为什么离开后不能返回它?我绝对是Python的新手,但以前没有使用过导入这个问题 - 尽管它们还没有在多个嵌套目录中。
感谢您的帮助!
答案 0 :(得分:1)
test_tools
是一个不可调用的模块。它会在您import
时运行,而不是在test_tools()
时运行。
如果要通过调用函数来运行该模块中的代码,则需要将该代码移动到函数中。例如:
在实用程序中:
elif choice == "4":
test_tools.run()
. . .
在test_tools中:
def run():
while True:
print "\n"
print "Select operation."
print "Press 1 to test ps_cli.py"
print "Press 2 to test remote_ps_session.py"
print "Press 3 to test ps_clear_dns_cache.py"
print "Press 4 to test ps_get_remote_system_local_users"
print "Press 5 to test ps_md5_hash"
print "Press 6 to test ps_remote_system_uptime"
print "Press 7 to test ps_unlock_account"
print "Press 'a' to exit"
. . .