1

似たような名前の .py ファイルをいくつか実行したいと考えています。目標は、a1.py、a2.py、および a3.py の呼び出しです。以下のものを試しましたが、動作しません。「n」の各要素をファイル名に挿入して複数のスクリプトを実行するにはどうすればよいですか? 助けてくれてありがとう。

n = [1,2,3]

for x in n:
     execfile('C:/a$n.py')
4

3 に答える 3

1

個人的には、連結よりも文字列の書式設定を使用する方が好きです (さまざまなデータ型に対してより堅牢です)。また、そのようなリストを保持する理由はなく、次のように置き換えることができますrange

for x in range(1,4): 
    execfile('C:/a%s.py' % x)

range(1, 4) == [1, 2, 3]  # True

つまり、formatMarcin が使用するコマンドは、技術的にはより Pythonic です。ただし、個人的には冗長すぎると思います。

文字列の連結が最もパフォーマンスの高いオプションだと思いますが、ここではパフォーマンスが決定要因になるべきではありません。

要点をまとめると:

Pythonic ソリューション:

execfile('C:/a{}.py'.format(x))

Cタイプのソリューション(私が個人的に好む):

execfile('C:/a%s.py' % x)

パフォーマンスの高いソリューション (繰り返しになりますが、ここではパフォーマンスが原動力であってはなりません)

execfile('C:/a' + str(x) + '.py')

編集:私が間違っていたことが判明し、Cタイプのソリューションが最もパフォーマンスが優れています。timeit以下の結果:

$ python -m timeit '["C:/a{}.py".format(x) for x in range(1,4)]'
100000 loops, best of 3: 4.58 usec per loop

$ python -m timeit '["C:/a%s.py" % x for x in range(1,4)]'
100000 loops, best of 3: 2.92 usec per loop

$ python -m timeit '["C:/a" + str(x) + ".py" for x in range(1,4)]'
100000 loops, best of 3: 3.32 usec per loop
于 2015-02-13T00:24:33.330 に答える
0

あなたはこれを行うことができます:

n = [1,2,3]

for x in n: 
    execfile('C:/a{}.py'.format(x))
    print('C:/a{}.py'.format(x))

名前は次のとおりです。

C:/a1.py
C:/a2.py
C:/a3.py
于 2015-02-13T00:23:47.007 に答える