[英]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以及Windows和Linux上均可使用的建议将不胜感激。
此消息仅表示一件事:找不到可执行文件。
这与您的数据文件无关,因为该过程甚至没有运行。
那为什么呢? 因为尽管zgrep
在Linux上是标准端口,但在Windows上却是第三方端口,因此您必须首先从此处安装
请注意,如果您只想在csv文件上grep一个字符串,那么使用zgrep
。 最好使用本机python方法,读取行(或行,使用csv
模块)并匹配模式。 您甚至可以本地打开.gz
文件。 然后它将真正是便携式的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.