Python subprocess.check_output conver to windows



我编写了一些在Linux计算机上正常工作但不在Windows上运行的代码。

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&3 Plus Windows和Linux将不胜感激。

此消息仅表示一件事:无法找到可执行文件。

这与您的数据文件无关,因为该过程甚至没有运行。

为什么?因为虽然zgrep是Linux上的标准配置,但它是Windows上的第三方端口,因此您必须首先从此处安装

请注意,如果您只想在CSV文件上抓取字符串,则使用zgrep是过分的。使用本机Python方法,读取行(或行,使用csv模块)和匹配模式更好。您甚至可以在本地打开.gz文件。然后,它将真的是便携式的。

相关内容

  • 没有找到相关文章

最新更新