2017-09-09 109 views
-4

私はWindows 10のPython-3.6.2でプログラムを書いた。私はCPUのシリアル番号を取得したい。私はプログラムを実行するとWindowsでPythonを使用してCPUシリアル番号を取得する方法は?

def getserial(): 
    # Extract serial from cpuinfo file 
    cpuserial = "0000000000000000" 
    try: 
     f = open('/proc/cpuinfo','r') 
     for line in f: 
      if line[0:6]=='Serial': 
       cpuserial = line[10:26] 
     f.close() 
    except: 
     cpuserial = "ERROR000000000" 
    return cpuserial 

print(getserial()) 

、それは印刷します:ERROR000000000

は、ここに私のコードです。

どうすれば修正できますか?

+0

使用しているOSは何ですか? – jedwards

+0

@ jedwards、私は窓10を使用します。 – naghi

+1

@naghi。あなたは、** Linux、OSXなどではなく** Windows上でのみ**動作するためにこれを必要としますか?もしそうなら、あなたはあなたの質問でこれを明確にすべきです。 – ekhumoro

答えて

0

あなたのコードは例外を発生させません。したがって、エラーは表示されません。Windowsには '/ proc/cpuinfo'ファイルはありません。

私はそのようなあなたのコードを書き換えています

def getserial(): 
    # Extract serial from cpuinfo file 
    with open('/proc/cpuinfo','r') as f: 
     for line in f: 
      if line[0:6] == 'Serial': 
       return line[10:26] 
     return "0000000000000000" 

まず、私は、ファイルのコンテキストマネージャを使用するwith文を持っている:例外が発生するかしない時はいつでも、あなたのファイルが閉じられます。

ループを単純化します。「シリアル」エントリが見つかった場合は、値を返します。

EDIT

バージョン> = 2.6でのpythonを持っている場合は、単に

import multiprocessing 

multiprocessing.cpu_count() 

http://docs.python.org/library/multiprocessing.html#multiprocessing.cpu_count

EDIT2

私が発見された最良のソリューションを使用することができます"cpuinfo"を取得するにはpy-cpuinfo図書館。

import cpuinfo 
info = cpuinfo.get_cpu_info() 
print(info) 

しかし、「シリアル」エントリは標準ではないと思います。私は古典的なシステムでそれを見ることはできません。

+0

、どのようにWindowsでcpuserialを取得しますか? – naghi

+0

@naghi:タイトルは「どのようにcpu cpuserialをpythonで入手するのですか?」(Windowsではなく)です。しかし、私はその不満を理解しています。その疑問にはいくつかの欠陥がある。 –

+0

私はそれを使用したいプログラム内のウィンドウでユーザとして一意の識別子、あなたのオファーは何ですか? – naghi

関連する問題