Python 如何从导入的模块调用函数,然后在返回到原始模块时正确使用文本菜单?
因此,我调用选项Python 如何从导入的模块调用函数,然后在返回到原始模块时正确使用文本菜单?,python,python-3.x,Python,Python 3.x,因此,我调用选项[1]将我带到createDirectory(),该选项一旦执行其功能,就会将我返回到主菜单()。然后我无法再次调用选项[1],如何获取它以便我可以再次调用选项[1] 文件1: import os from os import makedirs, path import shutil def main_menu(): while True: # loop = 1 # if loop == 1:
[1]
将我带到createDirectory()
,该选项一旦执行其功能,就会将我返回到主菜单()
。然后我无法再次调用选项[1]
,如何获取它以便我可以再次调用选项[1]
文件1:
import os
from os import makedirs, path
import shutil
def main_menu():
while True:
# loop = 1
# if loop == 1:
print("PLEASE CHOOSE AN OPTION BELOW BY ENTERING THE CORRESPONDING NUMBER: \n")
print("[1]: CREATE CASE FOLDER STRUCTURE")
print("[2]: DELETE X-WAYS CARVING FOLDER")
print("[3]: BACK CASE UP TO SERVER")
print("[4]: CLOSE PROGRAMME \n")
while True:
# choice = int(input("ENTER YOUR CHOICE HERE:"))
try:
choice = int(input("ENTER YOUR CHOICE HERE:"))
if choice == 1:
# loop = 0
from CreateDirectory import create_directory
# main_menu()
# break
elif choice == 2:
import RemoveFolder
break
elif choice == 3:
caseBackup()
break
elif choice == 4:
break
else:
print("INVALID CHOICE!! PLEASE ENTER A NUMBER BETWEEN 1-3")
main_menu()
except ValueError:
print("INVALID CHOICE!! PLEASE ENTER A NUMBER BETWEEN 1-3")
main_menu()
if __name__ == "__main_menu__":
main_menu()
main_menu()
文件2:
import os
from os import makedirs, path
import sys
sys.path.append('C:/Users/Matthew/Desktop/HTCU Scripts')
def createDirectory(targetPath):
if not path.exists(targetPath):
makedirs(targetPath)
print('Created folder ' + targetPath)
else:
print('Path ' + targetPath + ' already exists, skipping...')
# MAIN #
print('''Case Folder Initialiser
v 1.1 2015/09/14
A simple Python script for creating the folder structure required for new cases as follows;
05 DF 1234 15
+--Acquisitions
¦ ---QQ1
¦ ---QQ2
¦ ---...
+--Case File
¦ ---X Ways
¦ +--EnCase
¦ ¦ +--Temp
¦ ¦ +--Index
¦ +--NetClean
+--Export
---X Ways Carving
All user inputs are not case sensitive.
''')
driveLetter = input('Enter the drive letter for your WORKING COPY disc: ').upper()
limaReference = input('Enter the Lima reference number, such as 05 DF 12345 15: ').upper()
rootPath = driveLetter + ':/' + limaReference + '/'
print('You will now enter your exhibit references, such as QQ1. Press enter at an empty prompt to stop adding further exhibits.')
exhibits = []
while True:
exhibit = input('Enter exhibit reference: ').upper()
if not exhibit:
print('You have finished adding exhibits and the folders will now be created.')
break
exhibits.append(exhibit)
for exhibit in exhibits:
targetPath = rootPath + '/Acquisitions/' + exhibit + '/'
createDirectory(targetPath)
targetPath = rootPath + 'Case File/X Ways/'
createDirectory(targetPath)
targetPath = rootPath + 'Case File/EnCase/Temp/'
createDirectory(targetPath)
targetPath = rootPath + 'Case File/EnCase/Index/'
createDirectory(targetPath)
targetPath = rootPath + 'Case File/NetClean/'
createDirectory(targetPath)
targetPath = rootPath + 'Export/X Ways Carving/'
createDirectory(targetPath)
print('All folders created, script has terminated.\n')
if __name__ == "__createDirectory__":
createDirectory(targetPath)
from TestMain import main_menu
您缺少对如何构造和使用模块的基本理解。模块不是“调用”的,而是“导入”的,以便访问该模块内的功能。您的原始帖子不正确地使用了导入语句,而按照惯例,它只应在模块顶部使用一次 顺便说一句,请注意循环引用,因为您不希望模块A导入模块B,然后模块B引用回模块A。这应该是不必要的 因此,您的主模块(在我的示例中名为
main.py
)可能如下所示:
from myDirUtils import create_folder_structure, remove_folder, case_backup
def main_menu():
finished = False
while not finished:
print("PLEASE CHOOSE AN OPTION BELOW BY ENTERING THE CORRESPONDING NUMBER: \n")
print("[1]: CREATE CASE FOLDER STRUCTURE")
print("[2]: DELETE X-WAYS CARVING FOLDER")
print("[3]: BACK CASE UP TO SERVER")
print("[4]: CLOSE PROGRAMME \n")
try:
choice = int(input("ENTER YOUR CHOICE HERE:"))
if choice == 1:
create_folder_structure()
elif choice == 2:
remove_folder()
elif choice == 3:
case_backup()
elif choice == 4:
finished = True
else:
print("INVALID CHOICE!! PLEASE ENTER A NUMBER BETWEEN 1-3")
except ValueError:
print("INVALID CHOICE!! PLEASE ENTER A NUMBER BETWEEN 1-3")
if __name__ == "__main__":
# execute only if run as a script
main_menu()
第二个模块(名为myDirUtils.py
并与'main.py'放在同一目录中)定义如下:
from myDirUtils import create_folder_structure, remove_folder, case_backup
def main_menu():
finished = False
while not finished:
print("PLEASE CHOOSE AN OPTION BELOW BY ENTERING THE CORRESPONDING NUMBER: \n")
print("[1]: CREATE CASE FOLDER STRUCTURE")
print("[2]: DELETE X-WAYS CARVING FOLDER")
print("[3]: BACK CASE UP TO SERVER")
print("[4]: CLOSE PROGRAMME \n")
try:
choice = int(input("ENTER YOUR CHOICE HERE:"))
if choice == 1:
create_folder_structure()
elif choice == 2:
remove_folder()
elif choice == 3:
case_backup()
elif choice == 4:
finished = True
else:
print("INVALID CHOICE!! PLEASE ENTER A NUMBER BETWEEN 1-3")
except ValueError:
print("INVALID CHOICE!! PLEASE ENTER A NUMBER BETWEEN 1-3")
if __name__ == "__main__":
# execute only if run as a script
main_menu()
从操作系统导入makedirs,路径
def create_文件夹_结构():
打印('---您的所有说明--')
driveLetter='D'
limaReference='lima'
rootPath=driveLetter+'://'+limaReference+'/'
#在这里建展品
targetPath=rootPath+'CaseFile/XWays/'
_创建目录(targetPath)
targetPath=rootPath+'CaseFile/Encase/Temp'
_创建目录(targetPath)
def删除文件夹():
打印(“在删除文件夹中…”)
def case_backup():
打印(“以防备份…”)
定义创建目录(targetPath):
打印(“在创建目录中…”)
如果路径不存在(targetPath):
print('现在我们必须创建文件夹')
#makedirs(目标路径)
其他:
打印('路径'+targetPath+'已存在,正在跳过…'))
您对如何构造和使用模块缺乏基本的了解。模块不是“调用”的,而是“导入”的,以便访问该模块内的功能。您的原始帖子不正确地使用了导入语句,而按照惯例,它只应在模块顶部使用一次
顺便说一句,请注意循环引用,因为您不希望模块A导入模块B,然后模块B引用回模块A。这应该是不必要的
因此,您的主模块(在我的示例中名为main.py
)可能如下所示:
from myDirUtils import create_folder_structure, remove_folder, case_backup
def main_menu():
finished = False
while not finished:
print("PLEASE CHOOSE AN OPTION BELOW BY ENTERING THE CORRESPONDING NUMBER: \n")
print("[1]: CREATE CASE FOLDER STRUCTURE")
print("[2]: DELETE X-WAYS CARVING FOLDER")
print("[3]: BACK CASE UP TO SERVER")
print("[4]: CLOSE PROGRAMME \n")
try:
choice = int(input("ENTER YOUR CHOICE HERE:"))
if choice == 1:
create_folder_structure()
elif choice == 2:
remove_folder()
elif choice == 3:
case_backup()
elif choice == 4:
finished = True
else:
print("INVALID CHOICE!! PLEASE ENTER A NUMBER BETWEEN 1-3")
except ValueError:
print("INVALID CHOICE!! PLEASE ENTER A NUMBER BETWEEN 1-3")
if __name__ == "__main__":
# execute only if run as a script
main_menu()
第二个模块(名为myDirUtils.py
并与'main.py'放在同一目录中)定义如下:
from myDirUtils import create_folder_structure, remove_folder, case_backup
def main_menu():
finished = False
while not finished:
print("PLEASE CHOOSE AN OPTION BELOW BY ENTERING THE CORRESPONDING NUMBER: \n")
print("[1]: CREATE CASE FOLDER STRUCTURE")
print("[2]: DELETE X-WAYS CARVING FOLDER")
print("[3]: BACK CASE UP TO SERVER")
print("[4]: CLOSE PROGRAMME \n")
try:
choice = int(input("ENTER YOUR CHOICE HERE:"))
if choice == 1:
create_folder_structure()
elif choice == 2:
remove_folder()
elif choice == 3:
case_backup()
elif choice == 4:
finished = True
else:
print("INVALID CHOICE!! PLEASE ENTER A NUMBER BETWEEN 1-3")
except ValueError:
print("INVALID CHOICE!! PLEASE ENTER A NUMBER BETWEEN 1-3")
if __name__ == "__main__":
# execute only if run as a script
main_menu()
从操作系统导入makedirs,路径
def create_文件夹_结构():
打印('---您的所有说明--')
driveLetter='D'
limaReference='lima'
rootPath=driveLetter+'://'+limaReference+'/'
#在这里建展品
targetPath=rootPath+'CaseFile/XWays/'
_创建目录(targetPath)
targetPath=rootPath+'CaseFile/Encase/Temp'
_创建目录(targetPath)
def删除文件夹():
打印(“在删除文件夹中…”)
def case_backup():
打印(“以防备份…”)
定义创建目录(targetPath):
打印(“在创建目录中…”)
如果路径不存在(targetPath):
print('现在我们必须创建文件夹')
#makedirs(目标路径)
其他:
打印('路径'+targetPath+'已存在,正在跳过…'))
您绝对不应该修改您导入的模块中的sys.path。如果不使用此选项,我将如何从文件1调用文件2?我甚至无法回答这个问题。这确实不是您使用导入的方式。我现在已经更改了它,谢谢。您绝对不应该在您导入的模块中修改sys.path。如果不使用此方式,我将如何从文件1调用文件2?我甚至无法开始回答这个问题。这真的不是你使用导入的方式。我现在已经更改了它,谢谢。谢谢这个PeterT-it好建议,实施起来并不困难。谢谢这个PeterT-it好建议,实施起来并不困难。