0

質問は繰り返されるように聞こえるかもしれません。しかし、ここに質問を説明するコードがあります:

#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」はシステム内に存在するパーティション(dfコマンドで表示)を意味し、「req_partition」は理想的に存在するはずのパーティションのリストを意味します。ここで、必要なパーティション(req_partition)をハードコーディングしたくありません。その入力を外部ファイルから取得してリストに保存し、次に示すように処理したいと思います。助けてください。質問が紛らわしい場合は、さらに詳しく説明します。前もって感謝します

4

1 に答える 1

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
于 2013-03-12T10:50:23.613 に答える