gpt4 book ai didi

Python subprocess.check_output 转换为 windows

转载 作者:太空宇宙 更新时间:2023-11-04 12:19:14 26 4
gpt4 key购买 nike

我写了一些在 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 上是第三方端口,所以你必须先从 here 安装它

请注意,如果您只想对 csv 文件中的字符串进行 grep,那么使用 zgrep 就有点过分了。使用 native python 方法、读取行(或行,使用 csv 模块)和匹配模式要好得多。您甚至可以在本地打开 .gz 文件。然后它将真正是可移植的。

关于Python subprocess.check_output 转换为 windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46495464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com