如何打开新CMD窗口并自动调用原Python脚本中的方法?
解决方案
要在新CMD窗口中调用原脚本的hello()方法,核心是让新窗口启动独立的Python进程来执行目标函数——因为新CMD窗口是独立进程,无法直接共享原Python进程中的函数和变量。以下是两种可行的实现方式:
方法一:直接在新窗口执行内嵌代码
通过python -c参数将hello()的定义、全局变量和调用逻辑直接传入新窗口的Python解释器:
import os def hello(): print(say_hello) say_hello = 'hello' # 构造CMD命令:启动新窗口并执行Python代码 cmd_cmd = f'start cmd.exe /k "python -c \"say_hello = \'{say_hello}\'; def hello(): print(say_hello); hello()\""' os.system(cmd_cmd)
关键说明:
/k:让CMD执行命令后保持窗口打开(若执行后需自动关闭,替换为/c)- 多层引号需用反斜杠
\转义,避免CMD解析出错
方法二:导入原脚本调用函数
如果你的代码保存在独立脚本文件(比如test.py)中,可让新窗口直接导入该脚本并调用函数,更简洁易维护:
import os import sys def hello(): print(say_hello) say_hello = 'hello' # 获取当前脚本所在目录,确保Python能找到导入的脚本 script_path = os.path.dirname(os.path.abspath(sys.argv[0])) # 构造命令:切换到脚本目录,再执行导入和调用 cmd_cmd = f'start cmd.exe /k "cd /d {script_path} && python -c \"import test; test.hello()\""' os.system(cmd_cmd)
注意事项:
- 脚本文件名需和
import后的名称一致(比如脚本叫test.py,就用import test) - 若脚本不在Python默认搜索路径中,必须先切换到脚本所在目录(用
cd /d命令)
内容的提问来源于stack exchange,提问作者Santos
相关产品推荐
相关产品推荐

