FileX.txtという名前のテキストファイルをいくつか生成できるようにしたい(Xは整数):
for i in range(key):
filename = "ME" + i + ".txt" //Error here! Can't concat a string and int
filenum = filename
filenum = open(filename , 'w')
ファイル名= "ME" + iの部分を他の誰かが知っているので、名前が "ME0.txt"、 "ME1.txt"、 "ME2.txt"などのファイルのリストを取得します。
x = 1
y = "foo" + str(x)
Python documentation: https://docs.python.org/2/library/functions.html#str をご覧ください。
Python 2.6より前のバージョンの場合、 文字列フォーマット演算子_%
_ を使用します。
_filename = "ME%d.txt" % i
_
2.6以降では、 str.format()
メソッドを使用します。
_filename = "ME{0}.txt".format(i)
_
最初の例は2.6でも機能しますが、2番目の例が優先されます。
この方法で名前を付けるファイルが10個を超える場合は、ディレクトリリストでファイルが正しく順序付けられるように、先頭にゼロを追加することができます。
_filename = "ME%02d.txt" % i
filename = "ME{0:02d}.txt".format(i)
_
これにより、_ME00.txt
_から_ME99.txt
_などのファイル名が生成されます。桁数を増やすには、例の_2
_をより大きな数字に置き換えます(たとえば、_ME{0:03d}.txt
_)。
どちらか:
"ME" + str(i)
または:
"ME%d" % i
特に、複数のトークンから文字列を作成する場合は、通常2番目のものが優先されます。
str()
を使用してキャストするか、フォーマッターを使用できます。
"ME%d.txt" % (num,)
ここにあなたのコード全体の答え:
key =10
files = ("ME%i.txt" % i for i in range(key))
#opening
files = [ open(filename, 'w') for filename in files]
# processing
for i, file in Zip(range(key),files):
file.write(str(i))
# closing
for openfile in files:
openfile.close()