-4

谁能告诉我python 3中以下代码的等价物?

file_list = range(1, 20)

for x in file_list:
    exec "f_%s = open(file_path + '/%s.txt', 'w')" % (x, x)

我需要打开 19 个文件。都有与之关联的变量名。

4

4 回答 4

5

我建议您使用字典而不是使用以下方法创建不同的变量名称exec

f = {x:open('{}/{}.txt'.format(file_path, x), 'w') for x in range(1, 20)}
于 2013-06-09T23:54:36.033 回答
2

exec现在是Python 3 中的一个函数。你应该使用.format()

exec("f_{0} = open(file_path + '/{0}.txt', 'w')".format(x))

此外,没有理由使用它。正如其他人指出的那样,一个简单的字典应该可以工作:

d = {}
for i in range(1,20):
    d['f_'+str(i)] = open(file_path + '/{}.txt'.format(i), 'w')
于 2013-06-09T23:48:27.610 回答
2

我可以推荐一个不需要的更好的代码exec吗?

import os
file_list = range(1, 20)

f = {}
for x in file_list:
    f[x] = open(os.path.join(file_path, '{0}.txt'.format(x)), 'w')
于 2013-06-09T23:57:49.207 回答
0

这是打开文件列表的不好方法。使用列表:

import os
file_path = '.'
files = [open(os.path.join(file_path,'{}.txt'.format(i)),'w') for i in range(1,20)]
于 2013-06-09T23:55:57.007 回答