2017-02-02 7 views
1

Windwsの下でPythonプログラムcclibを使用して、サブフォルダにあるいくつかの* .logファイルを処理します。 DOSスクリプトの助けを借りて、* .logファイルが存在する各サブフォルダに私の.pyスクリプトをコピーしました。CWDで特定のファイルタイプの絶対ファイルパスを取得する

あり、私はこの単純なの.pyスクリプトを実行したい:

from cclib.io import ccopen 
p = ccopen("*opt.NORMAL.log") 
data = p.parse() 
homo = data.homos[0] # assuming spin-restricted 
lumo = homo + 1 

homo_energy = data.moenergies[0][homo] 
lumo_energy = data.moenergies[0][lumo] 

print (homo_energy, lumo_energy) 

しかしccopen(すべてオフcclibs私のCで、この嘘の関連の.pyスクリプト:\のpy35フォルダ)を指示する* .logファイルにこのスクリプトを実行した現在の作業ディレクトリでは機能しません(AttributeError: 'NoneType'オブジェクトには 'parse'属性がありません)。 私のDOSスクリプトでは、* .logファイルを含むZ:\ dir1のすべてのサブサブサブクラスを再帰的に渡しますが、別の名前。これらの各ディレクトリで私はpyスクリプトを実行します。スクリプト内のccopenモジュールに、現在の作業ディレクトリの* .logファイルを処理するように指示するにはどうすればよいですか?

私はこの種の質問が何千回も聞かれたと思いますが、私はちょうど正しい解決策を見つけることができませんでした。だから、お手数をおかけして申し訳ありません。

答えて

0

あなたは念のためチェックして、ワイルドカードパターン

files = glob.glob("*opt.NORMAL.log") 
if len(files)==1: 
    p = ccopen(files[0]) 
else: 
    raise Exception("Expected 1 log file, found {}".format(len(files))) 
+0

感謝と一致するか、多くのファイルは存在しないだろう、ファイル名を解決するためにglob.globへの呼び出しによって

ccopen("*opt.NORMAL.log") 

あなたの行を変更することができます君は!しかし、私は間違った識別や何かを得たようです。これを修正する方法を教えてください。 – Marvin

+0

エラーが発生しました。ファイル "homolumoscript.py"、行29 ^ SyntaxError:予期しない構文解析中のEOF – Marvin

+0

残念ですが、括弧がありません。一定。 –

関連する問題