【问题标题】:Python: Run Script Under Same WindowPython:在同一窗口下运行脚本
【发布时间】:2014-03-13 08:20:03
【问题描述】:

我正在尝试设置一个程序,当有人输入命令时,它将运行该命令,该命令是一个名为“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

有人知道解决这个问题的方法吗?我希望脚本能够在同一个窗口下执行,这样它就不会打开一个全新的窗口来在那里运行代码。这可能是一个真正的菜鸟问题,但我无法找到任何关于此的内容。

谢谢,

丹尼尔·亚历山大

【问题讨论】:

    标签: python


    【解决方案1】:
    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()
    

    (假设您在lib/new_user.py 中定义了一个函数execute

    【讨论】:

    • 是的,但是当你这样做时,它会打开另一个控制台窗口,那么我如何制作它以便它在我执行它的控制台中运行?
    • 如果你在 Windows 下运行system.os(),shell 默认打开一个窗口。如果您确实需要,请尝试使用here 提到的方法,或者将subprocess.call 替换为Shell=False。阅读更多关于 subprocess 的信息,因为根据 Python 文档,不推荐使用 os.system。如果将 Python 作为 Python 执行(使用 importlib),所有这些都可以避免。
    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 2023-01-19
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多