GNU/Linux >> Linux の 問題 >  >> Linux

特定のファイルを含むファイルシステムのサイズと空き容量を見つける

Python 3.3 では、標準ライブラリを使用してこれを行う簡単で直接的な方法があります:

$ cat free_space.py 
#!/usr/bin/env python3

import shutil

total, used, free = shutil.disk_usage(__file__)
print(total, used, free)

$ ./free_space.py 
1007870246912 460794834944 495854989312

これらの数値はバイト単位です。詳細については、ドキュメントを参照してください。


これはパーティションの名前を示しませんが、 statvfs を使用してファイルシステムの統計を直接取得できます Unix システムコール。 Python から呼び出すには、os.statvfs('/home/foo/bar/baz') を使用します。 .

POSIX に従った結果の関連フィールド:

unsigned long f_frsize   Fundamental file system block size. 
fsblkcnt_t    f_blocks   Total number of blocks on file system in units of f_frsize. 
fsblkcnt_t    f_bfree    Total number of free blocks. 
fsblkcnt_t    f_bavail   Number of free blocks available to 
                         non-privileged process.

したがって、値を理解するには、f_frsize を掛けます。 :

import os
statvfs = os.statvfs('/home/foo/bar/baz')

statvfs.f_frsize * statvfs.f_blocks     # Size of filesystem in bytes
statvfs.f_frsize * statvfs.f_bfree      # Actual number of free bytes
statvfs.f_frsize * statvfs.f_bavail     # Number of free bytes that ordinary users
                                        # are allowed to use (excl. reserved space)

デバイスの空き容量だけが必要な場合は、os.statvfs() を使用して回答を参照してください

ファイルに関連付けられたデバイス名とマウント ポイントも必要な場合は、外部プログラムを呼び出してこの情報を取得する必要があります。 df df filename として呼び出されると、必要なすべての情報が提供されます。 ファイルを含むパーティションに関する行を出力します。

例を挙げると:

import subprocess
df = subprocess.Popen(["df", "filename"], stdout=subprocess.PIPE)
output = df.communicate()[0]
device, size, used, available, percent, mountpoint = \
    output.split("\n")[1].split()

df の正確な形式に依存するため、これはかなり脆弱であることに注意してください。 出力しますが、より堅牢なソリューションを認識していません。 (/proc に依存するソリューションがいくつかあります その下のファイルシステムは、このファイルシステムよりもさらに移植性が低くなります。)


Linux
  1. 空きディスク容量を見つけてディスク使用量を分析する方法は??

  2. 空きスペースはどうなりましたか?

  3. LsとHexdumpがファイルサイズについて意見が一致しないのはなぜですか?

  1. Imgファイルのタイプを見つけてマウントする方法は?

  2. 最大スタック サイズを確認するにはどうすればよいですか?

  3. 各ファイルとディレクトリのサイズを一覧表示し、Bash で降順で並べ替える方法は?

  1. デフォルトのファイルマネージャを見つける方法は?

  2. ルート ファイルシステムにスペースがありません。サイズを増やすにはどうすればよいですか?

  3. IF 条件を使用して、ファイル サイズが 1MB を超えているかどうかを確認します。