普通python中等效的Ipython run命令

时间:2015-11-13 10:50:38

标签: python ipython-notebook python-interactive

我试图使用spyder而不是ipython笔记本来运行程序,因为它目前运行得更快。 使用

导入和提取数据
run util/file_reader.py C:/file_address

显然,run命令在普通的python中不起作用而我找不到等效的,我已经看过各种如何替换ipython魔术命令Q& As在这里和一般但是我无法找到一个用于运行命令...

是否有一个模块或一组代码可以作为普通python中的等效代码?

1 个答案:

答案 0 :(得分:1)

你想要的是有点奇怪。准确地说,run magic在当前的ipython名称空间中运行给定文件,就好像它是__main__模块一样。要获得完全相同的效果,需要付出一些努力。

with open("util/file_reader.py") as f:
    src = f.read()

# set command line arguments
import sys
sys.argv = ["file_reader.py", "C:/file_address"]

# use "__main__.py" as file name, so module thinks its the main module
code = compile(src, "__main__.py", "exec")
exec(code)

如果在file_reader.py中定义主要功能会更容易和更好,然后在文件末尾调用if __name__ == "__main__":

例如

<强> UTIL / file_reader.py

def main(filename):
    print(filename)

if __name__ == "__main__":
    import sys
    main(sys.argv[1])

现在,您可以通过导入代码然后调用main函数轻松运行此模块中的代码。

例如

import util.file_reader

util.file_reader.main("C:/file_address")