コミートム合同会社

コミートム合同会社

PowerShellからPythonへ引数を渡す

PowerShellPythonThis article explains how to pass arguments to Python from PowerShell and execute it. It provides a stepbystep guide with code examples.
by JanitorSep 07, 2023
PowerShellからPythonへ引数を渡して実行する方法です。以前からあるマクロ付きエクセルファイルをPythonで操作しようとすると、古すぎてPythonからは操作できなかったりしますが、PowerShellの場合は扱えます。また、VBAと違ってPowerShellの場合はクラスファイルが作成できるので、一度エクセル操作用のPowerShellを作ってしまえば部品として扱えるので、別のエクセルファイルの操作にも使えて楽です。ただ、APIやらデータベースを扱う場合はPowerShellよりPythonの方が楽、ということが多々あるかと思います。エクセル操作はPowerShell、インターネット上の操作はPythonで切り分けたときに、PowerShellからPythonへ引数を渡す方法の説明です。ちょっとしたものを作成したいという方の参考になれば幸いです。

Jump Links

1.PowerShell ISEを起動してスクリプト作成
2.Pythonスクリプト作成
3.動作確認
1.PowerShell ISEを起動してスクリプト作成
「日本語」という引数をpythonファイルに渡すために用意しています。最後にPowerShellからPythonを呼び出しています。
powerShellFile.ps1 $pythonScriptPath = "Pythonファイルへのパス" $arg = "日本語" $byte = ([System.Text.Encoding]::UTF8).GetBytes( $arg ) $argB64 = [Convert]::ToBase64String( $byte ) python.exe $pythonScriptPath $argB64
2.Pythonスクリプト作成
やっていることは、引数を受け取ってprintしているだけです。
pythonFile.py import sys import base64 def main( receivedArg ): print( receivedArg ) if __name__ == '__main__': receivedArg = base64.b64decode( sys.argv[1] ).decode( 'utf-8' ) main( receivedArg )
3.動作確認
コマンドプロンプトを起動して下記のコマンドを実行し、「日本語」と出てくればOKです。
powershell -Command "powerShellFile.ps1へのパス"
PowerShellの場合は下記コマンドで確認できます。
. "powerShellFile.ps1へのパス"

Editors pick

Our other articles
© 2023 - Comytom LLC