我正在尝试设置一个程序,当某人输入命令时,它将运行该命令,该命令是名为“lib”的子文件夹中的脚本。
这是我的代码:
import os
while 1:
cmd = input(' >: ')
for file in os.listdir('lib'):
if file.endswith('.py'):
try:
os.system(str(cmd + '.py'))
except FileNotFoundError:
print('Command Not Found.')
我有一个文件:lib / new_user.py但是当我尝试运行它时出现了这个错误:
Traceback (most recent call last):
File "C:/Users/Daniel/Desktop/Wasm/Exec.py", line 8, in <module>
exec(str(cmd + '.py'))
File "<string>", line 1, in <module>
NameError: name 'new_user' is not defined
有没有人知道解决这个问题的方法?我希望如果脚本能够在同一个窗口下执行,那么它就不会打开一个全新的脚本来运行那里的代码。这可能是一个真正的Noob问题,但我无法找到任何相关内容。
谢谢,
Daniel Alexander
答案 0 :(得分:0)
os.system(os.path.join('lib', cmd + '.py'))
您正在调用new_user.py
,但它不在当前目录中。您需要构建lib/new_user.py
。
(我不确定这与windows有什么关系。)
然而,从Python执行Python代码的更好方法是将它们转换为模块并使用import
:
import importlib
cmd_module = importlib.import_module(cmd, 'lib')
cmd_module.execute()
(假设您在execute
)中定义了一个函数lib/new_user.py