Python: Executing a shell command(Python:执行 shell 命令)
问题描述
我需要这样做:
paste file1 file2 file3 > result
我的 python 脚本中有以下内容:
I have the following in my python script:
from subprocess import call
// other code here.
// Here is how I call the shell command
call ["paste", "file1", "file2", "file3", ">", "result"])
很遗憾,我收到了这个错误:
Unfortunately I get this error:
paste: >: 没有这样的文件或目录.
对此的任何帮助都会很棒!
Any help with this will be great!
推荐答案
有两种方法.
使用
shell=True
:
call("paste file1 file2 file3 >result", shell=True)
重定向,>
,是一个shell特性.因此,您只能在使用 shell 时访问它:shell=True
.
Redirection, >
, is a shell feature. Consequently, you can only access it when using a shell: shell=True
.
保持shell=False
,使用python进行重定向:
Keep shell=False
and use python to perform the redirection:
with open('results', 'w') as f:
subprocess.call(["paste", "file1", "file2", "file3"], stdout=f)
第二个通常是首选,因为它避免了 shell 的变幻莫测.
The second is normally preferred as it avoids the vagaries of the shell.
不使用 shell 时,>
只是命令行上的另一个字符.因此,请考虑错误消息:
When the shell is not used, >
is just another character on the command line. Thus, consider the error message:
paste: >: No such file or directory.
这表明 paste
已收到 >
作为参数,并试图打开该名称的文件.不存在这样的文件.因此消息.
This indicates that paste
had received >
as an argument and was trying to open a file by that name. No such file exists. Therefore the message.
作为 shell 命令行,可以使用该名称创建文件:
As the shell command line, one can create a file by that name:
touch '>'
如果存在这样的文件,当 subprocess
使用 shell=False
调用 paste
时,会使用该文件作为输入.
If such a file had existed, paste
, when called by subprocess
with shell=False
, would have used that file for input.
这篇关于Python:执行 shell 命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Python:执行 shell 命令
基础教程推荐
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 筛选NumPy数组 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01