由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Python调用bash一问
进入Programming版参与讨论
1 (共1页)
b***i
发帖数: 3043
1
本来有个流程,是通过bash实现的,
1. 读取一个远程文件 result=$()
2. 把这个文件内容给一个可执行程序
echo $result | my_command
现在需要用python完成同样的功能。问题,如果是两个调用subprocess,这个result变
量还能保留到第二行吗?
还是要一次完成?比如result=$() && ...
有什么别的办法吗?不想把result保留到文件里,因为有审查者提出这是一个安全问题
。留在内存是可以接受的。
C*****l
发帖数: 1
2
应该没问题吧,加上shell=True,大不了你可以先把这两行command写到一个文件里面取

【在 b***i 的大作中提到】
: 本来有个流程,是通过bash实现的,
: 1. 读取一个远程文件 result=$()
: 2. 把这个文件内容给一个可执行程序
: echo $result | my_command
: 现在需要用python完成同样的功能。问题,如果是两个调用subprocess,这个result变
: 量还能保留到第二行吗?
: 还是要一次完成?比如result=$() && ...
: 有什么别的办法吗?不想把result保留到文件里,因为有审查者提出这是一个安全问题
: 。留在内存是可以接受的。

f*******t
发帖数: 7549
3
subprocess.run可以把stdout保存在变量里,很方便。
话说你们写代码不看语言自带的文档吗,这种常用功能都写的明明白白,又不是什么天
顶星技术……
m******c
发帖数: 830
4
Your shell command is suboptimal. The variable $result is completely
unnecessary.
why not just use pipe:
command 1 | my command
or:
echo $(command 1) | my command

【在 b***i 的大作中提到】
: 本来有个流程,是通过bash实现的,
: 1. 读取一个远程文件 result=$()
: 2. 把这个文件内容给一个可执行程序
: echo $result | my_command
: 现在需要用python完成同样的功能。问题,如果是两个调用subprocess,这个result变
: 量还能保留到第二行吗?
: 还是要一次完成?比如result=$() && ...
: 有什么别的办法吗?不想把result保留到文件里,因为有审查者提出这是一个安全问题
: 。留在内存是可以接受的。

b***i
发帖数: 3043
5
二进制的文件内容也行吗?就是说stdout的结果是二进制的16个字节,不一定是文本,
其中可能包含0, 32(空格)等所有的字节

【在 f*******t 的大作中提到】
: subprocess.run可以把stdout保存在变量里,很方便。
: 话说你们写代码不看语言自带的文档吗,这种常用功能都写的明明白白,又不是什么天
: 顶星技术……

b***i
发帖数: 3043
6
这也是一个办法。echo那个应该可以。主要是这个command 1是在远程机运行的,所以
得间接显示一下到本地。

【在 m******c 的大作中提到】
: Your shell command is suboptimal. The variable $result is completely
: unnecessary.
: why not just use pipe:
: command 1 | my command
: or:
: echo $(command 1) | my command

f*******t
发帖数: 7549
7
stdout本来就是binary data呀,想转成str还要decode

【在 b***i 的大作中提到】
: 二进制的文件内容也行吗?就是说stdout的结果是二进制的16个字节,不一定是文本,
: 其中可能包含0, 32(空格)等所有的字节

b***i
发帖数: 3043
8
那很好了,太方便了,就是利用python变量转移一下。

【在 f*******t 的大作中提到】
: stdout本来就是binary data呀,想转成str还要decode
1 (共1页)
进入Programming版参与讨论