2017-02-17 3 views
9

からに読み書き:最高レベルでWay to extract pickles coming in and out of ipython/jupyter notebookすべてのファイルを決定する。これは、この質問への一般化であるipythonノート

、私は自動的にipythonノートに何が起こっ要約する方法を探しています。私が問題を単純化する方法の1つは、ノートブックの中のすべてのデータ操作をブラックボックスとして扱い、入力と出力が何であるかだけに焦点を当てることです。それで、ipythonノートにファイルパスが与えられた方法はありますか?どのようにして、それがメモリに読み込まれたすべてのファイル/ウェブサイトを後で書き込み/ダンプするすべてのファイルを簡単に決めることができますか?私は多分、入力と出力のためにそれを解析し、ファイルをスキャンする機能がある可能性が考え、そして簡単にアクセスするための辞書にそれを保存している:私はちょうどを超えて簡単にこれを行う方法を思ったんだけど

summary_dict = summerize_file_io(ipynb_filepath) 

print summary_dict["inputs"] 
> ["../Resources/Data/company_orders.csv", "http://special_company.com/company_financials.csv" ] 

print summary_dict["outputs"] 
> ["orders_histogram.jpg","data_consolidated.pickle"] 

txt、csv、jpg、pngなどのさまざまなフォーマットを含むようにオブジェクトをpickleします。また、Webから直接ノート自体にデータを読み込むこともできます。

+0

ディルを使用してPythonのインタラクティブなセッション全体を漬け込むことができます:http://trac.mystic.cacr.caltech.edu/project/pathos/wiki/dill.html – denfromufa

+0

@denfromufaおそらく私は何かが不足しています...ノートブックで何が起こっているのかを説明するのに役立ちますか? – Afflatus

+0

実際にノートブックを実行しなければ、これを行うことはできません。 http://stackoverflow.com/a/2023709/464289のように__builtin__.openを置き換えることができます。また、同じ関数を使用してファイルをダウンロードする場合は、必要なものを記録した呼び出しでそのファイルを置き換えることができますファイルをダウンロードします。 – JRG

答えて

4

組み込みのopenをJRG suggestedとしてパッチを当てることで、開いたファイルや変更したファイルを確認することができます。また、この機能を拡張して、ウェブサイトに接続する機能を修正してください。

import builtins 


modified = {} 
old_open = builtins.open 


def new_open(name, mode='r', *args, **kwargs): 
    modified[name] = mode 
    return old_open(name, mode=mode, *args, **kwargs) 


# patch builtin open 
builtins.open = new_open 


# check modified 
def whats_modified(): 
    print('Session has opened/modified the following files:') 
    for name in sorted(modified): 
     mode = modified[name] 
     print(mode.ljust(8) + name) 

これをインタープリタで実行する(またはモジュールとして使用する)と、変更した内容とそのオープン方法を確認できます。

In [4]: with open('ex.txt') as file: 
    ...:  print('ex.txt:', file.read()) 
    ...:  
ex.txt: some text. 



In [5]: with open('other.txt', 'w') as file: 
    ...:  file.write('Other text.\n') 
    ...:  

In [6]: whats_modified() 
Session has opened/modified the following files: 
r  ex.txt 
w  other.txt 

ファイルが再び開いたときモードが上書きされるが、それはnew_openで行わいくつかの余分なチェックで固定することができ、これは、しかし幾分制限されています。

関連する問題