我编写了一些在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
文件。然后,它将真的是便携式的。