0

私はPythonスクリプトの初心者です。ディレクトリ内のすべてのファイルに対して実行したいスクリプトがあります。このスレッドで非常に役立つアドバイスを見つけました。ただし、コマンドプロンプトでスクリプトを実行したいファイルのファイル名、つまり「python script.py filename.*」を取得するように、実際のスクリプトをフォーマットする方法を決定するのに苦労しています。 Python のドキュメントとこのサイトのフォーラムを精査したところ、何も見つかりませんでした (おそらく、どのキーワードを検索すればよいかわかりません)。

現在、一度に 1 つのファイルに対してスクリプトを実行し、次のコードを使用して新しいファイル拡張子で出力できますが、この方法では一度に 1 つのファイルしか実行できません。「GENE.*」を使用してディレクトリ全体を反復できるようにしたいと思います。

InFileName = 'GENE.303'

InFile = open(InFileName, 'r') #opens a pipeline to the file to be read line by line

OutFileName = InFile + '.phy'

OutFile = open(OutFileName, 'w')

この場合と同様に、ディレクトリを介して反復を使用できるようにするには、コードをどうすればよいですか? ありがとうございました!

4

2 に答える 2

1

あなたは探している:

import sys
InFileName = sys.argv[1]

ドキュメントを参照してください。

より洗練されたものについては、optparseおよびargparseモジュールを見てください (後者の方が望ましいですが、Python の新しいバージョンでのみ利用可能です)。

于 2013-01-15T14:50:37.863 に答える
0

Python を使用してファイルのリストを処理するには、いくつかのオプションがあります。


コマンド ラインのシェル拡張機能を使用して、スクリプトにさらにファイル名を渡し、コマンド ライン引数を繰り返すことができます。

import sys

def process_file(fname):
    with open(fname) as f:
        for line in f:
            # TODO: implement
            print line

for fname in sys.argv[1:]:
    process_file(fname)

そしてそれを次のように呼び出します:

python my_script.py * # expands to all files in the directory

glob モジュールを使用してこの展開を行うこともできます。

import glob

for fname in glob.glob('*'):
    process_file(fname)
于 2013-01-15T14:56:28.180 に答える