2013-03-12 59 views
0

這個問題聽起來可能會重複;但在這裏是將解釋問題的代碼:使用python將數據從外部文件保存到列表中

#compares partitions displayed by 'df' command with the required list of partitions. 

import subprocess 
import re 


p = subprocess.Popen("df -h", stdout=subprocess.PIPE, shell=True) 
dfdata, _ = p.communicate() 

dfdata = dfdata.replace("Mounted on", "") 

columns = [list() for i in range(10)] 
for line in dfdata.split("\n"): 
    line = re.sub(" +", " ", line) 
    for i,l in enumerate(line.split(" ")): 
     columns[i].append(l) 


sys_partition = columns[5] 
req_partition = ['/', '/boot', '/home', '/usr', '/usr/local', '/var', '/tmp', '/mnt/floppy', '/mnt/cdrom', '/dev/shm'] 


def remove_common_elements(sys_partition, req_partition): 
    sys_partition_new = sys_partition[:] 
    req_partition_new = req_partition[:] 

    for i in sys_partition: 
     if i in req_partition_new: 
      sys_partition_new.remove(i) 
      req_partition_new.remove(i) 
return req_partition_new 

if set(sys_partition) == set(req_partition): 
    print 'All the partitions exist in your system!!!' 
else: 
    print 'These partitions do not exist: ', 
    print (remove_common_elements(sys_partition, req_partition)) 

在這個程序中,「sys_partition」意味着本INT的系統(由df命令顯示)分區和「req_partition」意味着這應該是理想的分區的列表當下。現在,我不想硬編碼所需的分區(req_partition)。我想從外部文件中獲取輸入並將其存儲到列表中,然後如圖所示進行處理。 請幫忙。如果問題很混亂,我會盡力詳細說明。 在此先感謝

回答

0

它看起來像你問如何從文件中讀取,並將項目列表中。如果是這樣,刪除此行:

req_partition = ['/', '/boot', '/home', '/usr', '/usr/local', '/var', '/tmp', '/mnt/floppy', '/mnt/cdrom', '/dev/shm'] 

這些線路進行更換:

req_partition = list() 
with open('/path/to/partitions') as f: 
    for line in f: 
     req_partition.append(line.strip()) 

,並確保該文件,/path/to/partitions,有以下內容:

/ 
/boot 
/home 
/usr 
/usr/local 
/var 
/tmp 
/mnt/floppy 
/mnt/cdrom 
/dev/shm 
相關問題