2013-04-05 62 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