从另一个Python脚本执行Python脚本时的IOError

时间:2014-03-20 06:54:32

标签: python

我是Python脚本的新手,并且遇到了一个我无法弄清楚的问题。 在SO上检查了很多帖子,但找不到令人满意的问题解决方案。 这是我的python代码。

我的要求是我有现有的python脚本EXECUTE.py,它从命令行接受EXECUTESQL.cfg作为参数。 EXECUTESQL.cfg包含我在调用EXECUTE.py时需要执行的.SQL。 目前我可以使用此命令运行脚本,并且运行时没有任何问题。

$PYTHON3_EXEC EXECUTE.py EXECUTESQL.cfg

现在我想从另一个python脚本中调用上面的命令,我尝试按以下方式执行,但是无法执行。

with open("EXECUTE.py EXECUTESQL.cfg") as f:
    code = compile(f.read(), "EXECUTE.py EXECUTESQL.cfg", 'exec')
    exec(code)

每当我执行时,我都会收到以下错误

IOError: [Errno 2] No such file or directory: 'EXECUTE.py EXECUTESQL.cfg'

我不确定为什么我会这样,因为我很确定目录中都有EXECUTE.py EXECUTESQL.cfg。 有人可以帮助我解决问题以及如何解决问题

由于

Vikeng21

2 个答案:

答案 0 :(得分:0)

open功能打开1个文件。因此,当您执行open("EXECUTE.py EXECUTESQL.cfg")时,它会尝试打开名为"EXECUTE.py EXECUTESQL.cfg"的文件,当然,该文件不存在。要打开多个文件,您需要使用多个open语句,如下所示:

with open("EXECUTE.py") as f1, open("EXECUTESQL.cfg") as f2:

但是当你想要做的只是运行另一个脚本时,你不应该使用compileexec。为此,请查看subprocess module

答案 1 :(得分:0)

能够找到问题的解决方案并运行脚本。希望它可以帮到某人。

import sys
import os
import EXECUTE

EXECUTE.executeSQL('EXECUTESQL.cfg', None)