WindowsコマンドプロンプトまたはWindows PowerShellで実行するかどうかで実行したいpythonプログラムを書いています。プログラム内でpythonが実行される環境を判断する方法があるかどうか疑問に思っていました。
前もって感謝します!
まず、このコードを使用して親プロセス ID を取得します。次に呼び出します。
if ("powershell.exe" in os.popen("tasklist /fi \"PID eq %d\"" % parentPID).read()) {
# We're a child of powershell!!
...
}
正直に言うと、PowerShell で実行している場合に別の方法で実行するのはちょっと奇妙です。なぜこれをやりたいのかを真剣に考え、不必要なことをしていないかどうかを評価する必要があります。
代わりにプラットフォームが必要な場合 (最後のステートメントで多少暗示されています)、プラットフォーム モジュールは通常、知りたいことを教えてくれます。
>> import platform
>> platform.architechture()
('64bit', 'WindowsPE')
ドキュメントis_64bits = sys.maxsize > 2**32
から、 Mac で 64 ビットと 32 ビットを判断するために使用することが提案されていることに注意してください。
1 つの解決策を試すことができます。Python コードからいくつかの PowerShell コマンドを Write-Host (cmd で同等のエコー) として呼び出し、呼び出し結果を取得できます。失敗した場合は PowerShell ではありません。(今はテストできません)。
スクリプトを呼び出すときに、別のパラメーターを真剣に追加する必要があります。
スクリプト内では、sys.args
変数はスクリプトに渡されるすべての引数を提供します (最初は常にスクリプトの名前です)。
仕事に役立つライブラリoptparseもあります.....
あなたがしていることは良い習慣ではありません:Pまったく逆です:)とにかく、これをあまり難しく考えないでください。つまり、あなたが何をしようとしているのかわかりませんが、危険な考えのように聞こえます。