python execfile_Python 3中的Execfile的替代方案是什么?

当exec(open("filename").read())通常被认为是替代execfile("filename"),它忽略了一些重要的细节execfile支持。

下面的Python3.x函数与直接执行文件的行为非常接近。与跑步相匹配的python /path/to/somefile.py.def execfile(filepath, globals=None, locals=None):

if globals is None:

globals = {}

globals.update({

"__file__": filepath,

"__name__": "__main__",

})

with open(filepath, 'rb') as file:

exec(compile(file.read(), filepath, 'exec'), globals, locals)# execute the fileexecfile("/path/to/somefile.py")

注:使用二进制读取以避免编码问题。

保证关闭文件

(Python3.x对此发出警告)

定义

__main__一些脚本依赖于此来检查它们是否作为模块加载。

if __name__ == "__main__"

设置

__file__对于异常消息和一些脚本使用的

__file__获取相对于它们的其他文件的路径。

接受可选的全局参数和局部变量,将它们修改为execfile这样,您就可以在运行后通过读取变量来访问任何定义的变量。

不像Python 2execfile这确实是不默认情况下修改当前命名空间。为此,您必须显式地传递globals() & locals().

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值