とMEMORYSTATUSEX()
でRAMサイズが正常に取得できますが、ディスクサイズの合計(空き容量ではありませんが、一般的には総容量)の検索に問題があります。Windowsでディスク全体のサイズを取得するには?
-1
A
答えて
2
のActiveStateは、Windows GetDiskFreeSpaceEx
機能を使用して、このためrecipeを持っています。私はいくつかの限られたテストを行ったときに動作するように見えましたが、いくつかの潜在的な問題がありますので、少なくともPython 2.7+〜3.xで動作する、モジュールで。
@eryksunは、彼が明らかにを使用するトピックの専門家であるため、拡張機能のクレジット/責任の大半を受けなければなりません。
import os
import collections
import ctypes
import sys
import locale
locale.setlocale(locale.LC_ALL, '') # set locale to default to get thousands separators
PULARGE_INTEGER = ctypes.POINTER(ctypes.c_ulonglong) # Pointer to large unsigned integer
kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
kernel32.GetDiskFreeSpaceExW.argtypes = (ctypes.c_wchar_p,) + (PULARGE_INTEGER,) * 3
class UsageTuple(collections.namedtuple('UsageTuple', 'total, used, free')):
def __str__(self):
# Add thousands separator to numbers displayed
return self.__class__.__name__ + '(total={:n}, used={:n}, free={:n})'.format(*self)
def disk_usage(path):
if sys.version_info < (3,): # Python 2?
saved_conversion_mode = ctypes.set_conversion_mode('mbcs', 'strict')
else:
try:
path = os.fsdecode(path) # allows str or bytes (or os.PathLike in Python 3.6+)
except AttributeError: # fsdecode() not added until Python 3.2
pass
# Define variables to receive results when passed as "by reference" arguments
_, total, free = ctypes.c_ulonglong(), ctypes.c_ulonglong(), ctypes.c_ulonglong()
success = kernel32.GetDiskFreeSpaceExW(
path, ctypes.byref(_), ctypes.byref(total), ctypes.byref(free))
if not success:
error_code = ctypes.get_last_error()
if sys.version_info < (3,): # Python 2?
ctypes.set_conversion_mode(*saved_conversion_mode) # restore conversion mode
if not success:
windows_error_message = ctypes.FormatError(error_code)
raise ctypes.WinError(error_code, '{} {!r}'.format(windows_error_message, path))
used = total.value - free.value
return UsageTuple(total.value, used, free.value)
if __name__ == '__main__':
print(disk_usage('C:/'))
出力例:
UsageTuple(total=102,025,392,128, used=66,308,366,336, free=35,717,025,792)
-1
このコードを使用する必要があります。
import win32com.client as com
def TotalSize(drive):
""" Return the TotalSize of a shared drive [GB]"""
try:
fso = com.Dispatch("Scripting.FileSystemObject")
drv = fso.GetDrive(drive)
return drv.TotalSize/2**30
except:
return 0
def FreeSpace(drive):
""" Return the FreeSape of a shared drive [GB]"""
try:
fso = com.Dispatch("Scripting.FileSystemObject")
drv = fso.GetDrive(drive)
return drv.FreeSpace/2**30
except:
return 0
drive = r'C:'
print 'TotalSize of %s = %d GB' % (drive, TotalSize(drive))
print 'FreeSapce on %s = %d GB' % (drive, FreeSapce(drive))
+0
Python3で0を返します – AlwaysQuestioning
関連する問題
- 1. ディスクのサイズを取得するEhcacheデータ
- 2. URL内のフォルダ全体のサイズを取得できますか?
- 3. テーブル内のレコードの合計サイズを列全体で取得する - symfony
- 4. テキストフィールド全体の行を取得する
- 5. 全体のサイトを取得するpython
- 6. C#でGeckoでHTMLタグ全体を取得するには?
- 7. Windowsフォームのサイズを取得する
- 8. カーソルの前でテキスト全体を取得
- 9. TFSでGITリポジトリURL全体を取得するには?
- 10. ディスク全体の内容をビット単位で読み取る方法
- 11. コントロール全体の位置を取得するには?
- 12. Amazon MWSの全体カテゴリ、サブカテゴリを取得するには?
- 13. ブラックベリーでsqliteテーブル全体を取得
- 14. Cのシステム全体のメモリを取得
- 15. ディスク全体にワイルドカードを含むファイルを見つける
- 16. spring hibernate db全体のロックを取得
- 17. GAE/Goで構造体のサイズを取得する
- 18. FileSystemObjectのソースコード全体を取得する方法は?
- 19. 文書全体のテキストコンテンツを取得する方法は?
- 20. JavaScriptでは、ファイル全体を取得せずにURLのコンテンツタイプを取得する方法はありますか?
- 21. tweepyでユーザ全体のtwitterタイムラインを取得する
- 22. クリックでHTMLテーブルの値全体を取得する方法
- 23. プロジェクト全体のバーンアップチャートの取得
- 24. ビットマップ全体のWindowsフォーム
- 25. Android:ページ全体を取得せずにURLから「タイトル」を取得する
- 26. 文書全体を取得したい
- 27. Vi/Vim辞書全体行を取得
- 28. C#でウェブページ全体のHTMLソースを取得するか、またはjqueryコードのデータをCで取得する
- 29. C++でWindowsからシステム全体のCPU使用率を取得する方法は?
- 30. 不明なファイル形式のディスクやドライブのサイズを取得する、C#.NET Framework?
私はあなたが[こちら]答えを見つけることができると思います(https://stackoverflow.com/a/276934/5805982)RAM用です –
@LexHobbit(メモリー) 、ディスクではありません。 – AlwaysQuestioning
ああ、申し訳ありませんUはこれについて既に書いています=) –