どうやって取り組むのかよくわからないという奇妙な問題を経験しています。相対パスを使用して結果をテキストファイルに記録するPython-seleniumスクリプトがあります。
ログファイルを設定するスクリプトの部分は次のとおりです。
log_file = './demo-logfiles/log_file_template.txt'
sys.stdout = open('log_file_template.txt', 'a',)
ご覧のとおり、フォルダへの相対パスを使用しています。このスクリプトを次
python demo.py firefox MAC
のように実行すると、スクリプトは問題なく実行され、ログファイルが適切なフォルダーに送信されます。
この正確なPythonスクリプトをより大きなシェルスクリプト内から実行すると、'./demo-logfiles/log_file_template.txt'
が存在しないというエラーが返されます。
スクリプトを変更する'../demo-logfiles/log_file_template.txt'
と、より大きなシェルスクリプトでは機能しますが、通常どおり実行すると機能しなくなることがわかりました。
どちらかで動作します。相対ディレクトリがさまざまな方法で解釈される理由は何ですか?Python/シェルで実行するための2つの別々のスクリプトは必要ありません。
元のPythonスクリプトはディレクトリ/blah/blah/DEMO/demo.py
にあり、それを実行するシェルスクリプトはにあります/blah/blah/DEMO/demo-autotest/autotest_logger.sh
この問題は、実行しようとしているすべてのスクリプトで発生することを確認しました。シェルスクリプトで動作させるために、元のPythonコードを変更する必要はありません。私はすでにシェルスクリプトでそれを説明しました、そしてそれはファイルを首尾よく実行します。
ありがとう。