2013-04-05 42 views
0
df = subprocess.Popen(["df", options.partname], stdout=subprocess.PIPE) 
output = df.communicate()[0] 
print output 

给出如下:Python的拆分和合并行

Filesystem   1K-blocks  Used Available Use% Mounted on 
/dev/mapper/sys-scratch 
        1446412616 847216452 524555652 62% /scratch 

在某些情况下(机),

output.split("\n")[1] 

给我

/dev/mapper/sys-scratch 

那里,因为我想

/dev/mapper/sys-scratch 1446412616 847216452 524555652 62% /scratch # in one line 

我使用的值在这样的输出:

device, size, used, available, percent, mountpoint = output.split("\n")[1].split() 

对于一些机器,这将失败,因为output.split("\n")[1]只有一个值。我怎样才能解决这个问题 ?

+0

它看起来像一个新行插入,以适应更长的文件系统的名称。 – 2013-04-05 16:09:02

+0

你需要哪些信息? 'df'不是为脚本解析而设计的;有更好的方法来获取磁盘信息。 – 2013-04-05 16:10:36

+0

**其他**答案[查找包含给定文件的文件系统的大小和可用空间](http://stackoverflow.com/q/4260116)实际上比使用'df'好。 – 2013-04-05 16:11:44

回答

0

在这种特定的情况下,你可以重新参加最后两行:

df = subprocess.Popen(["df", options.partname], stdout=subprocess.PIPE) 
output = df.communicate()[0] 
output = ' '.join(output.splitlines()[1:]) 
device, size, used, available, percent, mountpoint = output.split() 
+0

这是有效的。谢谢 – iamauser 2013-04-05 16:37:07