0

Python スクリプトを使用してターミナルでコマンドを実行しようとしています。3 つの引数しかとらないこのコマンドは、ターミナルで実行すると完全に機能します。コマンドラインに入力する内容は次のとおりです。

gpmetis inputfile numberOfSections

inputfileデスクトップなど、どこからでも、が実行されoutputfileた後に同じ場所にダンプされます( という名前が付けられます)。端末でのみ機能しますが、要約の目的で、Python スクリプトの途中で使用して時間を節約したいと考えています。(以前は、ターミナルと Python との間でファイルをシャッフルするだけでした)gpmetisinputfile.part.numberOfSectionsgpmetis

しかし、ここで問題が発生します...この質問とこのフォーラムoutputfileは、Python内でターミナルを実行する方法について役立つヒントを提供しましたが、Pythonコードを実行してもまだ受け取りません。出力が抑制されているか、端末の呼び出し方が間違っているようです。

現在、次のような端末を呼び出しています。

def Terminal(inputfile, NumParts): 
    os.system("gpmetis inputfile NumParts")

    outputfile = "inputfile.part." + NumParts
    return outputfile

これでエラーは発生しませんが、出力ファイルも受け取りません。ここで何が欠けているのですか?私はPythonを学ぼうとしているので、私が何を台無しにしているかを説明していただければ幸いです.

osがインポートされました。スクリプトで を「返す」方法に問題がある可能性がありますが、デスクトップoutputfileにも が表示されませんoutputfile。これは、最初に対処する必要がある問題です (一度に 1 ステップずつ!)。

注:関連するドキュメントを見つけましたが、役に立ちますか? わからなくて困ってます..

4

2 に答える 2

4

まず、 の戻り値を確認しますos.system。通常、0 以外の戻り値は、エラーが発生したことを示します。

コマンドでパラメーターを使用しようとしているようです。その場合、次のようになります。

def Terminal(inputfile, NumParts): 
    command = 'gpmetis ' + inputfile + ' ' + str(NumParts)
    os.system(command)

    outputfile = intputfile + '.part.' + str(NumParts)
    return outputfile

最後に、この回答に基づいて、subprocessモジュールを使用したほうがよいようです。次に、次のように同じコマンドを実行できます。

import subprocess
subprocess.call(['gpmetis', inputfile, str(NumParts)])
于 2012-07-11T23:43:00.127 に答える
0

inputfileこれは関数に渡される変数ですが、コマンドライン引数ではファイル名として取得されます。

あなたは試してみたいかもしれません

os.system('gpmetis ' + str(inputfile) + ' ' + str(NumParts))
outputfile = intputfile + '.part.' + str(NumParts)

呼び出しコードとその意図がなければ、なんとも言えません。それが役立つかどうか教えてください。

于 2012-07-11T23:34:24.367 に答える