用Python执行C++代码

5

我是Python的初学者,对于这似乎可行的事情一无所知。

我有一个简单的Python循环,可以给出当前目录中的所有文件。 我想要做的是在Python中对目录中所有这些文件都执行我之前编写的C++代码。

建议的Python循环应该像这样:

import os
for filename in os.listdir(os.getcwd()):
    print filename
    (Execute the code.cpp on each file with each iteration)

有没有可能做到这一点呢?


5
可能是从Python运行C++代码的重复问题。 - Anil_M
你在 Stack Overflow 上搜索过你的主题吗?有一些帖子讨论了在 Python 中执行 C++ 代码的问题。这是其中的一个例子:https://dev59.com/mmgu5IYBdhLWcg3wv5Ya - Anil_M
好的,还有两个问题。你是如何将文件名传递给主程序的 - 是通过命令行的 *argv[] 还是 cin 或其他方式?你使用的是哪个版本的Python?如果你使用的是3.5,解决方案将是使用 subprocess 模块,即 subprocess.run() - cdarke
@cdarke 我通过 *argv[] 传递文件名,我正在使用 Python 2.7。 - philippos
好的,我会发布一个简单的解决方案。 - cdarke
显示剩余3条评论
1个回答

7

从Python中执行外部程序非常容易 - 不受语言限制:

import os
import subprocess

for filename in os.listdir(os.getcwd()):   
    print filename
    proc = subprocess.Popen(["./myprog", filename])
    proc.wait()

用于参数的列表是平台特定的,但应该可以正常工作。您应该将 "./myprog" 更改为您自己的程序(它不必在当前目录中,它将使用 PATH 环境变量来查找它)。


非常感谢您的帮助。 如果您不介意,我还有两个问题。 第一,这是否仅限于Windows?(因为您写了./myprog) 第二,我忘记提到我的程序除了文件名外,还需要4个其他参数,并对它们进行一些计算。那么在这种情况下,我该如何包含这些参数? 可能是这样的: proc = subprocess.Popen(["./myprog", filename,arg1,arg2,...])吗? - philippos
5
不,这不特定于 Windows,你使用的是哪个操作系统?要添加其他参数,请将它们添加到列表中:subprocess.Popen(["./myprog", filename, arg1, arg2],...)。你可能可以使用字符串代替参数列表,但通常列表更简单。 - cdarke
我刚在MAC上尝试了一下,使用参数一切都很顺利!非常感谢! - philippos
太好了!下次你在这里提问时请记住我需要问的问题。你提到C++让人们认为你想从Python 在同一进程中 调用C++。你可以使用Python API来实现,尽管它比创建子进程更复杂。在这种情况下,语言实际上是无关紧要的。 - cdarke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接