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 使用的命令在技术上更符合 Python 风格。我个人觉得它过于冗长。

我相信字符串连接是性能最高的选项,但性能真的不应该是你的决定因素。

回顾一下:

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
for x in n: 
   execfile('C:/a{}.py'.format(x))

更好的:

for x in range(1,4):
    execfile('C:/a{}.py'.format(x))
于 2015-02-13T00:23:23.013 回答
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 回答