我正在尝试使用 spyder 而不是 ipython notebook 运行程序,因为它目前运行速度更快。数据是使用导入和提取的
run util/file_reader.py C:/file_address
显然,运行命令在普通 python 中不起作用,我找不到等价物,我在这里和一般情况下查看了各种如何替换 ipython 魔术命令问答,但我找不到运行命令。 ..
是否有一个模块或一组代码可以在普通 python 中作为等效项工作?
我正在尝试使用 spyder 而不是 ipython notebook 运行程序,因为它目前运行速度更快。数据是使用导入和提取的
run util/file_reader.py C:/file_address
显然,运行命令在普通 python 中不起作用,我找不到等价物,我在这里和一般情况下查看了各种如何替换 ipython 魔术命令问答,但我找不到运行命令。 ..
是否有一个模块或一组代码可以在普通 python 中作为等效项工作?
你想要的有点奇怪。准确地说,run 魔法在当前 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__":
例如。
实用程序/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")