2017-09-29 10 views
0

Linuxマシンではうまく動作しますが、ウィンドウでは動作しないコードを書きました。私はエラーを取得していますPython subprocess.check_outputウィンドウへの変換

import subprocess 
import pandas as pd 
try: 
    from StringIO import StringIO 
except ImportError: 
    from io import StringIO 

def zgrep_data(f, string='', index='TIMESTAMP'): 
    if string == '': 
     out = subprocess.check_output(['zgrep', string, f]) 
     grep_data = StringIO(out)  
     data= pd.read_csv(grep_data, sep=',', header=0) 

    else: 
     col_out = subprocess.check_output(['zgrep', index, f]) 
     col_data = StringIO(col_out) 
     columns = list(pd.read_csv(col_data, sep=',')) 

     out = subprocess.check_output(['zgrep', string, f]) 
     grep_data = StringIO(out)  
     data= pd.read_csv(grep_data, sep=',',names=columns, header=None) 

    return data.set_index(index).reset_index() 

: FileNotFoundError:[WinError 2]システムは、ファイルを見つけることができませんが、私はos.path.exists(FILE_PATH)でそれにそれをチェックすると、それはtrueを返します

を指定しました。このコードを修正してPython 2 &とWindowsとLinuxの両方で動作するように助言してください。

+0

'zgrep'はあなたのパスにありません。これは標準のWindowsコマンドではないので、Windowsのバージョンを見つけてインストールする必要があります...これがエラーの唯一の説明です。どのファイルをチェックしていますか? 'file_path'とは何ですか? –

+0

ファイルは私のCドライブにあります。 C:/Users/Chris/Documents/massivefile.csv –

+0

filepathは関数 –

答えて

0

このメッセージは、実行可能ファイルが見つかりませんでした。

これはプロセスが実行されていないため、データファイルとは関係ありません。

それはなぜですか? zgrepは、Linuxに標準装備されている間、それはWindows上でサードパーティのポートですので、あなたは、あなただけのCSVファイルの文字列をgrep検索したい場合は、それがzgrepを使用するためにやり過ぎだとhere

ノートから最初にそれをインストールする必要があるため。ネイティブのPythonアプローチを使用して、行(または行、csvモジュールを使用して)を読み取り、パターンを一致させる方がはるかに優れています。 .gzファイルをネイティブで開くことさえできます。その後、は本当にとなります。