返回错误格式错误的子进程 Hexdump 命令
Subprocess Hexdump Command Returning Bad Format Error
我正在使用子进程来获取 .tgz 文件的十六进制转储,因为我需要十六进制字符串。唯一的问题是,hexdump 抛出一个错误的格式错误,但只有当命令通过子进程发出时才会出现。我相信我已经正确地转义了所有内容,但我无法弄清楚为什么我没有得到我想要的输出:
def package_plugin():
plugin_hex = subprocess.run(["hexdump", "-v", "-e", "'1/1 \"\\x%%02x\"'", "package.tgz"])
这会导致错误:hexdump: "'1/1 "''x%%02x"'": bad format。但是,如果我只是 运行直接在终端中的命令我收到一个 hexstring 的预期输出,'\x' 分隔十六进制。
我应该如何 运行 将其存储在 Python 变量中?我的命令是否以某种方式被破坏,因此无法正确执行?任何建议表示赞赏。
谢谢
编辑:我应该补充一点,在终端中输入时,命令是 hexdump -v -e '1/1 "\x%02x"'
我不确定为什么错误中会显示额外的“%”符号,因为它应该被解释为单个 % 符号.
没关系。我想不通,但我用 hexlify 解决了它:
def package_plugin():
plugin_hex = ""
with open('plugin.tgz', 'rb') as f:
for chunk in iter(lambda: f.read(32), b''):
plugin_hex += binascii.hexlify(chunk).decode("utf-8")
formatted_hex = '\x' + '\x'.join(plugin_hex[i:i+2] for i in range(0, len(plugin_hex), 2))
我正在使用子进程来获取 .tgz 文件的十六进制转储,因为我需要十六进制字符串。唯一的问题是,hexdump 抛出一个错误的格式错误,但只有当命令通过子进程发出时才会出现。我相信我已经正确地转义了所有内容,但我无法弄清楚为什么我没有得到我想要的输出:
def package_plugin():
plugin_hex = subprocess.run(["hexdump", "-v", "-e", "'1/1 \"\\x%%02x\"'", "package.tgz"])
这会导致错误:hexdump: "'1/1 "''x%%02x"'": bad format。但是,如果我只是 运行直接在终端中的命令我收到一个 hexstring 的预期输出,'\x' 分隔十六进制。
我应该如何 运行 将其存储在 Python 变量中?我的命令是否以某种方式被破坏,因此无法正确执行?任何建议表示赞赏。 谢谢
编辑:我应该补充一点,在终端中输入时,命令是 hexdump -v -e '1/1 "\x%02x"'
我不确定为什么错误中会显示额外的“%”符号,因为它应该被解释为单个 % 符号.
没关系。我想不通,但我用 hexlify 解决了它:
def package_plugin():
plugin_hex = ""
with open('plugin.tgz', 'rb') as f:
for chunk in iter(lambda: f.read(32), b''):
plugin_hex += binascii.hexlify(chunk).decode("utf-8")
formatted_hex = '\x' + '\x'.join(plugin_hex[i:i+2] for i in range(0, len(plugin_hex), 2))