0

コマンドラインまたはインタープリター内で次を使用してPythonファイルを実行しようとしています:

import sys
import subprocess
subprocess.call([sys.executable, "file.py", "arg1", "arg2", "arg3"])

ただし、プログラムは TypeError を返します:「'str' オブジェクトと 'numpy.float64' オブジェクトを連結できません」。

私が理解できないのは、インタープリターでプログラムを1行ずつ実行すると、そのようなエラーはなく、すべて問題ないということです。

これのデバッグをどこから開始すればよいかわかりませんが、セットアップに関係があるのではないかと思います。

Windows 7 に 64 ビット バージョンの Python と 32 ビット バージョンの Python がインストールされています。両方のバージョンの Python は 2.7 です。(これは、32 ビットでのみ利用可能ないくつかのモジュールの使用によるものです。そのため、上記のプログラムは 32 ビット バージョンで実行されています)。環境パス変数は、32 ビット バージョンのみを使用するように編集されています。

他にどのような情報が関連しているかはわかりませんが、お知らせください。掘り下げます。

基本的に、コマンドからプログラムを実行できるようにしたいだけです:

python program.py arg1 arg2 arg3

どんな助けでも大歓迎です

4

1 に答える 1

3

ほとんどの場合、引数を文字列表現から変換せずに関数に渡しています。インタープリターでコードをテストし、数値を指定すると、もちろんすべてが期待どおりに機能します。 このようなことをしている場合:

# Wild guess at what your code actually looks like

if __name__ == "__main__":
    # main_function(23.1, 44.9, 12.21)  # This works when uncommented ... why?
    main_function(sys.argv[1], sys.argv[2], sys.argv[3])  # This breaks ... why?

次に、呼び出すときに次のことを知っておいてください。

python program.py 23.1 44.9 12.21

あなたは本当に次のように呼んmain_functionでいます:

main_function("23.1", "44.9", "12.21")

float型コンストラクターを使用して、引数を float に明示的に変換する必要があります。

于 2013-04-05T01:39:12.953 に答える