20

ループ上で関数を実行したいのですが、ファイル名にループ変数が含まれるように、出力を別のファイルに保存したいと考えています。ここに例があります

for i in xrange(10):
   f = open("file_i.dat",'w')
   f.write(str(func(i))
   f.close()

どうすればPythonでそれを行うことができますか?

4

5 に答える 5

31

+とでファイル名を作成するだけですstr。必要に応じて、古いスタイルまたは新しいスタイルのフォーマットを使用してファイル名を作成することもできます。

"file_" + str(i) + ".dat"
"file_%s.dat" % i
"file_{}.dat".format(i)

現在のバージョンではエンコーディングが指定されておらず(必要があります)、エラーが発生した場合にファイルを正しく閉じないことに注意してください(withステートメントがそれを行います)。

import io
for i in xrange(10):
   with io.open("file_" + str(i) + ".dat", 'w', encoding='utf-8') as f:
       f.write(str(func(i))
于 2012-09-24T07:32:33.910 に答える
4

次のように、変数を文字列に連結しiます。

f = open("file_"+str(i)+".dat","w")

また

f = open("file_"+`i`+".dat","w") # (`i`) - These are backticks, not the quotes.

利用可能な他のテクニックについては、ここを参照してください。

于 2012-09-24T07:33:04.360 に答える
4

を使用しf = open("file_{0}.dat".format(i),'w')ます。実際にはf = open("file_{0:02d}.dat".format(i),'w')、名前をゼロで埋めて2桁に保つようなものを使用することをお勧めします(したがって、後で並べ替えるのに便利な「file_1」ではなく「file_01」を取得します)。ドキュメントを参照してください。

于 2012-09-24T07:33:14.443 に答える
3

これを試して:

for i in xrange(10):
   with open('file_{0}.dat'.format(i),'w') as f:
       f.write(str(func(i)))
于 2012-09-24T07:33:27.943 に答える