0

次のようなPythonスクリプトがあります。

#I'm treating with text files
input = str(raw_input('Name1: '))
output = str(raw_input('Name2: '))

inputFile = open(input, 'r')
outputFile = open(output, 'w')

def doSomething():

    #read some lines of the input
    #write some lines to the output file

inputFile.close()
outputFile.close()

したがって、シェルでスクリプトを呼び出した後、入力ファイルの名前と出力の名前を入力する必要があります。

python script.py

しかし、スクリプトを呼び出すまでに、入力ファイルを直接呼び出して出力ファイルの名前を設定することは可能かどうか疑問に思うので、呼び出しの構文は次のようになります。

python script.py inputFile.txt outputFile.txt

次に、raw_input メソッドを使用せずに、他と同じようにします。どうすればこれを作ることができますか?

4

2 に答える 2

4

sys.argvを使用できます:

Python スクリプトに渡されるコマンド ライン引数のリスト。argv[0] はスクリプト名です (これがフル パス名であるかどうかは、オペレーティング システムによって異なります)。インタープリターに -c コマンド ライン オプションを使用してコマンドが実行された場合、argv[0] は文字列 '-c' に設定されます。スクリプト名が Python インタープリターに渡されなかった場合、argv[0] は空の文字列です。

import sys

input_filename = sys.argv[1]
output_filename = sys.argv[2]

with open(input_filename, 'r') as input_file, open(output_filename, 'w') as output_file:
    # do smth

close()また、ファイルに対して手動で行う代わりに、コンテキスト マネージャーを使用します。

また、コマンドライン引数のより複雑な処理については、argparseモジュールの使用を検討してください。

argparse モジュールを使用すると、使いやすいコマンドライン インターフェイスを簡単に記述できます。プログラムは必要な引数を定義し、argparse はそれらを sys.argv から解析する方法を見つけ出します。argparse モジュールは、ユーザーがプログラムに無効な引数を与えると、ヘルプと使用方法のメッセージを自動的に生成し、エラーを発行します。

于 2013-09-01T12:27:49.100 に答える
1

入力ファイル名と出力ファイル名を引数としてスクリプトに渡すことができます。ここに、どうやって行くかのスニペットがあります。

import sys

#check that the input and output files have been specified 
if len(sys.argv) < 3 :
   print 'Usage : myscript.py <input_file_name> <output_file_name>'
   sys.exit(0)

input_file = open(sys.argv[1])
output_file = open(sys.argv[2])
input_file.read()
output_file.write()
input_file.close()
output_file.close()

スクリプトを次のように呼び出します。myscript.py inputfile.txt outputfile.txt

ファイルを開く前に、入力ファイル名と出力ファイル名が指定されていることを確認し、指定されていない場合はエラーをスローすることをお勧めします。したがって、次のことができます

于 2013-09-01T12:28:01.677 に答える