当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX open_file用法及代码示例


本文简要介绍 networkx.utils.decorators.open_file 的用法。

用法:

open_file(path_arg, mode='r')

装饰器以确保文件的干净打开和关闭。

参数

path_arg字符串或int

作为路径的参数的名称或索引。

modestr

打开模式的字符串。

返回

_open_file函数

干净地执行io的函数。

注意

请注意,此装饰器解决了将路径参数指定为字符串时的问题,但它不处理函数想要接受默认值 None(然后处理它)的情况。

以下是如何处理这种情况的示例:

@open_file("path")
def some_function(arg1, arg2, path=None):
   if path is None:
       fobj = tempfile.NamedTemporaryFile(delete=False)
   else:
       # `path` could have been a string or file object or something
       # similar. In any event, the decorator has given us a file object
       # and it will close it for us, if it should.
       fobj = path

   try:
       fobj.write("blah")
   finally:
       if path is None:
           fobj.close()

通常,我们希望使用“with” 来确保 fobj 被关闭。但是,装饰器会将path 设为我们的文件对象,而使用“with” 会不希望地关闭该文件对象。相反,我们使用 try 块,如上所示。当我们退出函数时, fobj 将被装饰器关闭,如果它应该关闭的话。

例子

像这样装饰函数:

@open_file(0,"r")
def read_function(pathname):
    pass

@open_file(1,"w")
def write_function(G, pathname):
    pass

@open_file(1,"w")
def write_function(G, pathname="graph.dot"):
    pass

@open_file("pathname","w")
def write_function(G, pathname="graph.dot"):
    pass

@open_file("path", "w+")
def another_function(arg, **kwargs):
    path = kwargs["path"]
    pass

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.utils.decorators.open_file。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。