本文簡要介紹
networkx.utils.decorators.open_file
的用法。用法:
open_file(path_arg, mode='r')
裝飾器以確保文件的幹淨打開和關閉。
- path_arg:字符串或int
作為路徑的參數的名稱或索引。
- mode:str
打開模式的字符串。
- _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
相關用法
- Python NetworkX optimal_edit_paths用法及代碼示例
- Python NetworkX optimize_graph_edit_distance用法及代碼示例
- Python NetworkX overlap_weighted_projected_graph用法及代碼示例
- Python NetworkX negative_edge_cycle用法及代碼示例
- Python NetworkX voronoi_cells用法及代碼示例
- Python NetworkX numerical_edge_match用法及代碼示例
- Python NetworkX inverse_line_graph用法及代碼示例
- Python NetworkX LFR_benchmark_graph用法及代碼示例
- Python NetworkX write_graph6用法及代碼示例
- Python NetworkX DiGraph.__contains__用法及代碼示例
- Python NetworkX average_degree_connectivity用法及代碼示例
- Python NetworkX eulerian_circuit用法及代碼示例
- Python NetworkX single_source_dijkstra_path_length用法及代碼示例
- Python NetworkX from_dict_of_dicts用法及代碼示例
- Python NetworkX weisfeiler_lehman_subgraph_hashes用法及代碼示例
- Python NetworkX transitive_closure_dag用法及代碼示例
- Python NetworkX intersection用法及代碼示例
- Python NetworkX MultiGraph.size用法及代碼示例
- Python NetworkX Graph.size用法及代碼示例
- Python NetworkX from_scipy_sparse_array用法及代碼示例
- Python NetworkX local_and_global_consistency用法及代碼示例
- Python NetworkX number_of_selfloops用法及代碼示例
- Python NetworkX single_source_bellman_ford用法及代碼示例
- Python NetworkX all_simple_paths用法及代碼示例
- Python NetworkX Graph.to_undirected用法及代碼示例
注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.utils.decorators.open_file。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。