Ipython 运行 命令等同于普通 python

Equivalent of Ipython run command in normal python

我正在尝试 运行 使用 spyder 而不是 ipython notebook 的程序,因为它目前 运行 更快。 使用

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

显然 运行 命令在正常 python 中不起作用,我找不到等效命令,我查看了各种如何替换 ipython 魔术命令在这里和一般情况下进行问答,但我找不到 运行 命令...

是否有一个模块或一组代码可以在正常情况下等效地工作python?

你想要的有点奇怪。准确地说,运行 魔术 运行 是当前 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")