Конвертировать код PHP (proc_open) в Python (Popen)

Я пытаюсь преобразовать этот кусок кода PHP в Python. Я понял, как это сделать crc32b хэш, но я застрял на proc_open(), Не могли бы вы помочь мне?

Что я хочу, чтобы получить значение $pipeOutput в коде Python.

PHP

$hashedData = strrev(hash("crc32b", $data, true)) . $data;
$xzBinary = trim(`which xz`);
$xzProcess = proc_open("$xzBinary '--format=raw' '--lzma1=lc=3,lp=0,pb=2,dict=128KiB' '-c' '-'", [
0 => [
"pipe",
"r"],
1 => [
"pipe",
"w"]
], $xzProcessPipes);
fwrite($xzProcessPipes[0], $hashedData);
fclose($xzProcessPipes[0]);
$pipeOutput = stream_get_contents($xzProcessPipes[1]);
fclose($xzProcessPipes[1]);
proc_close($xzProcess);

питон

import zlib
from subprocess import Popen


def crc32b(x):
h = zlib.crc32(x)
x='%08X' % (h & 0xffffffff,)
return x.lower()

data = 'some_data'

hashed_data = crc32b(data)[::-1]+data #strrev(hash("crc32b", $data, true)) . $data;
xz_binary = '//usr/bin/xz'
r = Popen([xz_binary, "--format=raw",'--lzma1=lc=3,lp=0,pb=2,dict=128KiB','-c','-'])

РЕДАКТИРОВАТЬ

hashed_data = crc32b(data)[::-1]+data
xz_binary = '//usr/bin/xz'
p = Popen([xz_binary, "--format=raw",'--lzma1=lc=3,lp=0,pb=2,dict=128KiB','-c','-'],stdin=PIPE, stdout=PIPE,stderr=PIPE)

p.communicate()
stdout_file = p.stdout
stdin_file = p.stdin
stdin_file.write(hashed_data)

Говорит, что stdin_file закрыто, но я не уверен, что это то, что я должен делать

ValueError: I/O operation on closed file

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]