2017-09-16 9 views
-1

私は以下の関数を持っていて、パスを見て、どれくらいのディスクスペースが使われているかを判断します。main()のロジックがelse条件を満たしていないようです - なぜ

def check_disk_space(): 
    import os 
    cmdparts = ["echo $(df --output=pcent ", ") | tr -d 'Use% '"] 
       check_used_disk_space_cmd = cmdparts[0] + "a/path" + cmdparts[1] 
    os.system(check_used_disk_space_cmd) 

def main(): 
    used_disk_space = check_disk_space() 
    print type(used_disk_space) 
    if int(used_disk_space) > 80: 
     print "need more" 
    else: 
     print "plennnty!" 
     print type(used_disk_space) 
main() 

check_disk_space()が返されます。85です。

更新:check_disk_space()はNoneTypeオブジェクトを作成していますか?このエラーが発生しました: TypeError: int() argument must be a string or a number, not 'NoneType'

+2

あなたが実際に関数を呼び出していない、とあなたがやった場合でも、それはとにかく何も返さないので。 –

+0

os.system呼び出しの出力をキャプチャし、check_disk_spaceメソッドのINTまたはFLOATに変換したものを戻す必要があります。私は[subprocess.Popen](https://docs.python.org/2/library/subprocess.html#popen-constructor)クラスを見ていきます。 – Kyle

+0

更新されたメインをご覧ください。 – John

答えて

1

あなたのコードで変更された事柄がいくつかあります。

  1. あなたは、あなたの関数
  2. import osから任意の値を返すされていませんが、ファイルの先頭に

NOTEを移動することができます。私は、ステートメントを印刷する括弧を追加しました。

import os 

def check_disk_space(): 
    """ 
    check_disk_space() checks the available space of a specified path 
    """ 
    cmdparts = ["echo $(df --output=pcent ", ") | tr -d 'Use% '"] 
    check_used_disk_space_cmd = cmdparts[0] + "C:/Users/jgosalia/Desktop" + cmdparts[1] 
    return os.system(check_used_disk_space_cmd) 

def main(): 
    space = check_disk_space() 
    print("Space : " + str(space)) 
    if space > 95: 
     print ("need more") 
    else: 
     print ("plennnty!") 

main() 

実行サンプル1:

===== RESTART: C:/filesOperation.py ===== 
Space : 255 
need more 

は他の状態をチェックするために<>からif conditionを変更し、それが動作します。

実行サンプル2:

===== RESTART: C:/filesOperation.py ===== 
Space : 255 
plennnty! 
関連する問題