Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在行和列中剪切python输出_Python_String_Awk - Fatal编程技术网

如何在行和列中剪切python输出

如何在行和列中剪切python输出,python,string,awk,Python,String,Awk,大家好,我写了下面的程序来获取linux进程的输出 import subprocess def backupOperation(): p = subprocess.Popen(["ls","-la"], stdout=subprocess.PIPE) output, err = p.communicate() print(output) backupOperation() 如果我打印输出,其输出如下所示 -rw-r--r--. 1 root root 100 Dec

大家好,我写了下面的程序来获取linux进程的输出

import subprocess
def backupOperation():
   p = subprocess.Popen(["ls","-la"], stdout=subprocess.PIPE)
   output, err = p.communicate()
   print(output)

 backupOperation()
如果我打印输出,其输出如下所示

-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
 drwx------.  3 root root   24 Dec 21 15:14 .dbus
 drwxr-xr-x.  2 root root    6 Dec 21 15:21 Desktop
 drwxr-xr-x.  2 root root    6 Dec 21 15:21 Documents
 drwxr-xr-x.  2 root root    6 Dec 21 15:21 Down loads
 drwx------.  2 root root   22 Dec 21 17:07 .elinks
 -rw-------.  1 root root   16 Dec 21 15:21 .esd_auth
 drwx------.  2 root root   79 Dec 21 16:42 .gnupg
 -rw-------.  1 root root 1240 Feb 21 20:19 .ICEauthority
 -rw-r--r--.  1 root root 1142 Dec 21 15:15 initial-setup-ks.cfg
 drwx------.  3 root root   18 Dec 21 15:21 .local
 drwxr-xr-x.  4 root root   37 Dec 21 16:53 .mozilla
 drwxr-xr-x.  2 root root    6 Dec 21 15:21 Music
 drwxr-xr-x.  2 root root    6 Dec 21 15:21 Pictures
 drwxr-----.  3 root root   18 Dec 21 15:49 .pki
 -rw-r--r--   1 root root  172 Feb 24 22:44 process.py
 -rw-------.  1 root root   10 Dec 21 17:48 .psql_history
 drwxr-xr-x.  2 root root    6 Dec 21 15:21 Public
 -rw-------.  1 root root 1024 Dec 21 16:43 .rnd
 drwx------   2 root root   24 Feb 22 00:12 .ssh
 drwx------.  3 root root 4096 Dec 21 16:44 ssl-build
 -rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
 drwxr-xr-x.  2 root root    6 Dec 21 15:21 Templates
drwxr-xr-x.  2 root root    6 Dec 21 15:21 Videos
-rw-------   1 root root 6994 Feb 24 22:44 .viminfo
我所要做的就是像使用awk一样剪切OUTPUT的第一列,{print$1} 在这里,我想用python来做这件事,但我没有找到任何合适的字符串函数来做这件事。这可以用python来实现吗?或者我必须用shell来做这样的操作

for line in output.splitlines():
    print line.split(" ",1)[0]
除了代码,我不知道该放什么。。。这是很基本的

def backupOperation():
   p = subprocess.Popen(["ls","-la"], stdout=subprocess.PIPE, universal_newlines=True)
   output, err = p.communicate()
   print("\n".join([ x.split(None,1)[0] for x in output.splitlines()]))
除了代码,我不知道该放什么。。。这是很基本的

def backupOperation():
   p = subprocess.Popen(["ls","-la"], stdout=subprocess.PIPE, universal_newlines=True)
   output, err = p.communicate()
   print("\n".join([ x.split(None,1)[0] for x in output.splitlines()]))
或者实际使用
awk
管道将输出传输到它:

def backupOperation():
   p = subprocess.Popen(["ls","-la"], stdout=subprocess.PIPE)
   p2 = subprocess.Popen(["awk", '{print $1}'], stdin=p.stdout, stdout=subprocess.PIPE, universal_newlines=True)
   p.stdout.close()  
   out,err = p2.communicate()
   print("".join(out))

drwxrwxr-x
drwxrwxr-x
-rw-rw-r--
.......
或者实际使用
awk
管道将输出传输到它:

def backupOperation():
   p = subprocess.Popen(["ls","-la"], stdout=subprocess.PIPE)
   p2 = subprocess.Popen(["awk", '{print $1}'], stdin=p.stdout, stdout=subprocess.PIPE, universal_newlines=True)
   p.stdout.close()  
   out,err = p2.communicate()
   print("".join(out))

drwxrwxr-x
drwxrwxr-x
-rw-rw-r--
.......

请向我提供解释,我如何使用它来切割5列,其中有不同的子列请向我提供解释,我如何使用它来切割5列,其中有不同的子列,其中不运行的确切含义是什么?o我不知道你可以在拆分的第一个参数中使用无。。。太酷了:P@JoranBeasley,是的,那么您可以有任意数量的空白。@Padraic verymuch感谢上面的解决方案,ans需要再做一次修改,因为p2=subprocess.Popen我使用了awk解决方案。您能解释一下打印(“\n”.join([x.split(None,1)[0]表示输出中的x.splitlines()])是怎么回事吗working@thinkingmonster,对不起,是的,我总是从子流程导入
,所以我忘记了子流程。join基本上是在做Joran的代码,但使用列表理解。我们使用换行符连接分离的元素。我们在空格上拆分一次,并从拆分中提取第一个元素,即
x.split(None,1)[0]
,我们在任意数量的空格上传递None到split。运行不完全是什么意思?o我不知道split的第一个参数可以使用None。。。太酷了:P@JoranBeasley,是的,那么您可以有任意数量的空白。@Padraic verymuch感谢上面的解决方案,ans需要再做一次修改,因为p2=subprocess.Popen我使用了awk解决方案。您能解释一下打印(“\n”.join([x.split(None,1)[0]表示输出中的x.splitlines()])是怎么回事吗working@thinkingmonster,对不起,是的,我总是从子流程导入
,所以我忘记了子流程。join基本上是在做Joran的代码,但使用列表理解。我们使用换行符连接分离的元素。我们在空格上拆分一次,并从拆分中提取第一个元素,即
x.split(None,1)[0]
,我们在任意数量的空格上传递None到split。