0

Mac (OS Lion) のターミナルで Python 環境にいます。

Python スクリプトには、次の行が含まれています。

def main():
    file1 = open(sys.argv[1])
    file2 = open(sys.argv[2])
    file3 = open(sys.argv[3])

次のようにしてスクリプトを実行する必要があると思います。

script.py file1.txt file2.txt file3.txt

しかし、私は以下のエラーメッセージを受け取り続けます:

>>> process.py output1.txt output2.txt output3.txt
  File "<stdin>", line 1
    process.py output1.txt output2.txt output3.txt
                     ^
SyntaxError: invalid syntax

すべてのファイルとスクリプトは現在の作業ディレクトリにあります (私はそれを で確認しimport os、 を実行しprint os.getcwd()ました。誰かが私を正しい方向に向けることができますか? ありがとう!

4

4 に答える 4

1

スクリプトを Python 内からプログラムで使用できるようにしたい場合は、main引数を受け入れるように関数を少し変更するだけで実現できます。例えば、

def main(*argv):
    file1 = open(argv[1])
    file2 = open(argv[2])
    file3 = open(argv[3])

if __name__ == "__main__":
    main(*sys.argv)

これにより、柔軟性が大幅に向上し、コマンドラインからだけでなく、次のようなプログラム内でもプログラムを呼び出すことができます。

import process
process.main("output1.txt", "output2.txt", "output3.txt")
于 2013-05-14T03:48:05.360 に答える
1

プロンプトからは、Python インタープリター内からスクリプトを実行しようとしているかのように見えます。つまり、入力pythonしてから、Python>>>プロンプトでスクリプト名とパラメーターを入力しています。このプロンプトは、対話的に実際の Python コマンドを入力するためのものです。

Python インタープリターを終了し、通常のシェル プロンプトでスクリプト名とパラメーターを入力するだけで機能します (#!/usr/bin/pythonスクリプトの最初の行がある限り)。

于 2013-05-13T20:32:47.533 に答える