Python:执行 shell 命令

2023-07-21Python开发问题
2

本文介绍了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!

推荐答案

有两种方法.

  1. 使用 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 命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

在xarray中按单个维度的多个坐标分组
groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)...
2024-08-22 Python开发问题
15

Pandas中的GROUP BY AND SUM不丢失列
Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)...
2024-08-22 Python开发问题
17

pandas 有从特定日期开始的按月分组的方式吗?
Is there a way of group by month in Pandas starting at specific day number?( pandas 有从特定日期开始的按月分组的方式吗?)...
2024-08-22 Python开发问题
10

GROUP BY+新列+基于条件的前一行抓取值
Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)...
2024-08-22 Python开发问题
18

PANDA中的Groupby算法和插值算法
Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)...
2024-08-22 Python开发问题
11

PANAS-基于列对行进行分组,并将NaN替换为非空值
Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)...
2024-08-22 Python开发问题
10