Python script2.pyから呼び出し元のスクリプト(script1.py)にデータを返すための最良の方法を見つけようとしています。LinuxでPython3を使用しています。
Script1はscript2.pyを呼び出し、次にSeleniumを使用してブラウザーウィンドウを開き、何かを実行します。script2が終了すると、ブラウザーは開いたままになり、script1が続行されます。次に、script1内から、script2で開いたブラウザウィンドウで作業できるようにしたいのです。
これまでのところ、開いているブラウザウィンドウに関する情報をscript2からscript1に戻す適切な方法を見つけることができませんでした。問題の一部は、script2が呼び出されると、script1が閉じるまで待機してから続行するため、script2で開いている変数を取得する方法がないためだと思います。私もこの側面を変えたくありません。
script1.pyでは、次のコードは次のようにscript2を呼び出します。
cmd = ['python3', '/home/admin/Desktop/Python_stuff/live-scripts/script2.py']
subprocess.Popen(cmd).wait() # Python will now wait for script to end before continuing
script2では、次のコードは最初にブラウザを開きます(script2が閉じた後も現在開いたままです)。
driver.get(targetURL)
Pickleを確認しましたが、希望どおりに機能させることができなかったため、次にインポートJSONを使用しようとします。しかし、私はここで私が望むことを達成するためのより簡単な方法が欠けているのではないかと思いました。
私を正しい軌道に乗せてくれたコメントのpguardiarioに感謝します。これに対する答えは、script2をモジュールとして使用することです。
私は実際にこれをすでに試みましたが、スクリプトの名前にダッシュがあったため、script1がクラッシュしていました。これは、スクリプトの場合は正常に機能しますが、モジュールとして使用されている場合は何らかの理由で機能しません。エラーもありません。スクリプトから完全に爆破するだけです(私のlinux / python 3セットアップではこれが当てはまります)。
ファイルの名前付けの問題を解決すると、解決策は驚くほど簡単になりました。
script1.pyで私は今持っています
import script2
次に、2番目のスクリプトからmain()関数を呼び出します。
script2.main
script2に変更を加える必要はありませんでした。これはローカルフォルダーから実行されるため、追加のパス設定は必要ありません。また、スクリプト呼び出しコードもすべて削除できるようになりました。
重要な点は、モジュールの名前付けにダッシュを使用しないことです。ダッシュはエラー警告を表示しませんが、インポートしません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加