相关疑难解决方法(0)

运行shell命令并捕获输出

我想编写一个函数来执行shell命令并将其输出作为字符串返回,无论是错误还是成功消息.我只想获得与命令行相同的结果.

什么是代码示例会做这样的事情?

例如:

def run_command(cmd):
    # ??????

print run_command('mysqladmin create test -uroot -pmysqladmin12')
# Should output something like:
# mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'
Run Code Online (Sandbox Code Playgroud)

python shell subprocess

816
推荐指数
15
解决办法
96万
查看次数

将os.system的输出分配给变量并防止它显示在屏幕上

我想将我运行的命令的输出分配给os.system变量,并防止它输出到屏幕.但是,在下面的代码中,输出被发送到屏幕并且打印的var值为0,我猜这表示命令是否成功运行.有没有办法将命令输出分配给变量并阻止它显示在屏幕上?

var = os.system("cat /etc/services")
print var #Prints 0
Run Code Online (Sandbox Code Playgroud)

python

253
推荐指数
6
解决办法
39万
查看次数

如何在python中的变量中存储执行的shell命令的结果?

我需要存储我在变量中执行的shell命令的结果.但我无法做到这一点.我尝试过:

import os    

call = os.system("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'")
print call
Run Code Online (Sandbox Code Playgroud)

但它在终端中打印结果并将调用值打印为零,可能表示成功.如何将结果存储在变量中?

python linux bash shell

24
推荐指数
4
解决办法
6万
查看次数

进行系统调用,将stdout输出作为字符串返回

Perl和PHP用反引号做到这一点.例如,

$output = `ls`;
Run Code Online (Sandbox Code Playgroud)

返回目录列表.类似的函数system("foo")返回给定命令foo的操作系统返回码.我在谈论一个将foo打印返回到stdout的变体.

其他语言如何做到这一点?这个函数有一个规范名称吗?(我要用"反击";但也许我可以用"syslurp"硬币.)

language-agnostic terminology

16
推荐指数
11
解决办法
1万
查看次数

与subprocess.check_call相比,它返回​​stdout的内容有什么用呢?

我想是的接口相匹配的好方法subprocess.check_call-即,它抛出CalledProcessError的时候失败了,是同步的,&C -的,而是返回命令的返回码(如果它甚至不认为)返回程序的输出,要么只是stdout,要么是(stdout,stderr)的元组.

有人有这样做的方法吗?

python subprocess

13
推荐指数
1
解决办法
1万
查看次数

什么是Perl反引号的Python等价物?

可能重复:
Python中的反引号等价物

当我想直接写入Perl中的命令提示符时,我可以这样做:

Perl文件test.pl:

$directory = `dir`;  
print $directory;
Run Code Online (Sandbox Code Playgroud)

哪个会输出像..

C:\ Documents and Settings\joslim\Desktop> perl test.pl

驱动器C中的卷没有标签.卷序列号为EC37-EB31

C:\ Documents and Settings\joslim\Desktop目录
(以及所有文件的列表..)

我可以用Python做到这一点吗?我四处搜寻但没有运气.

另外,你能告诉我这叫什么吗?我确信有一个比"直接写入命令提示符"更具技术性的术语......

python terminal perl cmd

1
推荐指数
1
解决办法
2871
查看次数

在python中调用linux命令

可能重复:
Python中的反引号等价物

我正在寻找在Python中运行终端命令(ls -l)的最佳方法.我已经阅读了有关子流程的内容,但我完全不了解它,如果有人可以尝试让我了解正在发生的事情,我将不胜感激.我需要使用ls -l命令检索一个硬链接号,即!= 1,然后保存此号码以匹配其他地方的目录号码.现在我想知道如何获取硬链接号并使用子进程将其保存到变量(如果有的话,可以使用更好的方法).

这是我到目前为止使用的代码:#!/ usr/bin/python

#tool that resolves time machine directories 

import os

#create output file 
os.chdir("/home/sean/Desktop")
hard_link_number = open('hardLinkNumber.log', 'w')

#move into mounted backup (figure out how to remove xe2 etc)
os.chdir("/mnt/Backups.backupdb/stuart dent\xe2\x80\x99s MacBook Pro/2010-08-10-160859/MAc")

#find hard link data 
print>>hard_link_number, os.system("ls -la")
hard_link_number.close()
Run Code Online (Sandbox Code Playgroud)

os.system("ls -la")输出我需要的信息,但不会将其保存到我创建的文件中.我在别处读到os.system不会输出数据.

python subprocess os.system hardlink

0
推荐指数
1
解决办法
598
查看次数