在不同的命令行界面 (CLI) 中打开 python 程序?

发布于 2024-12-26 05:47:08 字数 205 浏览 0 评论 0 原文

我需要一个 python 脚本来打开另一个 CLI 并在那里运行它。例如,

python C:\Python27\Scripts\script.py test
python /path/to/script_folder/script.py test

我需要同时支持 Unix 和 Windows。

有什么建议吗?

I need a python script that opens another CLI and run it in there. E.g.

python C:\Python27\Scripts\script.py test
python /path/to/script_folder/script.py test

I need to support both Unix and Windows.

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烙印 2025-01-02 05:47:08

如果您正在寻找在脚本中运行交互式控制台,那么我会使用如下内容:

import code
console = code.InteractiveConsole()
console.interact()

您可以在 代码模块文档。特别是,您可能对 runco​​derunsource 方法感兴趣。

如果您正在寻找运行脚本并在 python shell 中执行脚本后继续,那么我会使用如下内容:

$ python -i <path_to_script>

If you are you looking for running an interactive console in your script, then I'd use something like this:

import code
console = code.InteractiveConsole()
console.interact()

You can find more information in the code module documentation. In particular, you might be interested in the runcode and runsource methods.

If you are looking for running a script and continue after the script execution in a python shell, then I'd use something like this:

$ python -i <path_to_script>
行至春深 2025-01-02 05:47:08

如果我正确理解你的问题,你想要:

  1. 启动一个 python 脚本
  2. 该脚本本身应该启动一个新的终端窗口
  3. 在这个新终端中,应该运行另一个 python 脚本

根据第 3 点是否必须保持终端窗口打开,解决方案可以变得非常不同。

如果您不需要打开窗口,只需选择 os.system 或 subprocess 即可。如果您只运行 python 脚本,您可能只需指定“python”作为可执行文件即可,因此是跨平台的。

如果您确实需要打开窗口,则必须启动特定的 shell+终端,这是特定于操作系统的(Windows 中的 cmd.exe;在 Unix 世界中,/bin/sh、/bin/bash 或其他任何东西,可能由 xterm 包装)。

但说实话,除非有一些非常具体的要求打开一个完全不同的终端会话,否则您应该做的就是导入第二个模块并从第一个模块运行它,或者在内存中读取它然后使用 exec< /代码>。

If I understand your question correctly, you want to:

  1. launch a python script
  2. This script should itself launch a new terminal window
  3. In this new terminal, another python script should be run

Depending on whether point 3 must then leave the terminal window open, solutions can be very different.

If you don't need the window open, just go for os.system or subprocess. If you are only running a python script, you might get away with just specifying "python" as the executable, hence being cross-platform.

If you do need the window open, you'll have to launch the specific shell+terminal, which is OS-specific (cmd.exe in Windows; in the unix world, /bin/sh, /bin/bash or whatever else, probably wrapped by xterm).

But to be honest, unless there's some very specific requirement to have a completely different terminal session open, what you should do is just import the second module and run it from the first, or read it in memory and then use exec.

花想c 2025-01-02 05:47:08

经过深思熟虑,阅读了这个问题和其他问题,我找到了解决方案,度过了“我是傻子”的时刻,最后,这将解决问题:

command = r'start cmd.exe python "' + <script> + r'" [args]'
os.system(command)

关键字是“开始”。它的神奇之处在于,它基本上告诉 Windows 要执行的文件与实际的调用者无关,而中提琴,你有一个新的控制台。

我不确定 Unix,但我认为它会类似,以某种方式使用 gnome-terminal 。

After much deliberation, reading this question and others, I found the solution, had my "man am I dumb" moment, and in the end, this will do the trick:

command = r'start cmd.exe python "' + <script> + r'" [args]'
os.system(command)

The keyword there is "start." It does magic that basically tells Windows that the file to execute has no relation to the actual caller, and viola, you have a new console.

I'm not sure about Unix, but I assume it'd be similar, using gnome-terminal somehow.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文