2017-10-06 22 views
0

私はpythonの新機能で、cドライブのフリースペースとソフトウェアパスの存在のCSVファイルに情報を与えるコードを作成しようとしています。以下Pythonを使用してデータを取得してcsvに挿入

私はCSVで取得していますが出力される

import time 
import csv 
import os 
import socket 
import ctypes 
import platform 
import sys 

timestr = time.strftime("%Y.%m.%d") 

filepath = r"D:\_library\_abcd\test" 
filename = timestr + ".csv" 

machinename = socket.gethostname() 
print machinename 

def Get_free_space_mb(direname): 
    if platform.system() == 'Windows': 
     free_bytes = ctypes.c_ulonglong(0) 
     ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(direname),None, None, ctypes.pointer(free_bytes)) 
     print(free_bytes.value/1024/1024) 
     return free_bytes.value/1024/1024 
    else: 
     st = os.statvfs(dirname) 
     return st.f_bavail * st.f_frsize/1024/1024 

Cdrivespace = Get_free_space_mb("C:\\") 

def software1(): 
    if os.path.isdir("C:\Program Files\software1"): 
     return "software1 Exist" 
    else: 
     return "software1 not Exist" 
software_1 = software1() 

def software2(): 
    if os.path.isdir("C:\Program Files\software2"): 
     return "software2 Exist" 
    else: 
     return "Nuke9 not Exist" 
software_2 = software2() 

def software3(): 
    if os.path.isdir("C:\Program Files\software3"): 
     return "software3 Exist" 
    else: 
     return "software3 not Exist" 
software_3 = software3() 

with open(os.path.join(filepath,filename), 'ab+') as file_: 
writer = csv.writer(file_,delimiter=",") 
data = [machinename,Cdrivespace,software1,software2,software3] 
writer.writerows([data]) 

..私はしようとしているコードです: (SUPT5)(10150)(0x02AF47B0での関数ソフトウェア1)(0x02AF4A70での関数software2()関数0x02AF4AB0でsoftware3)出力が期待されるもの

である: (SUPT5)(10150 MB)(ソフトウェア1が存在する)(software2が存在する)(software3存在しない)

私はcsvファイルにCdrivespaceの値を書き込んだ後にmbを書きたいと思っています。 私はコードをより簡単に変更できますか?

+0

提案 - 3つの別々の関数sw1、sw2、sw3を書くのではなく、1つに結合して引数を渡す –

答えて

1

あなたdataラインでこれを試してください:あなたはsoftware1などの機能ではなく、返された値(software_1など)を参照して

data = [machinename, str(Cdrivespace) + 'MB', software_1, software_2, software_3] 

関連する問題