如何使用 "for" 语句在 Python 中引用多个名称相似的脚本?

How do I reference several scripts with similar names in Python with a "for" statement?

我想执行几个具有相似名称的 .py 文件。目标是调用 a1.py、a2.py 和 a3.py。我已经尝试了下面的内容,但无法正常工作。如何将 "n" 中的每个元素插入到文件名中以执行多个脚本?感谢您的帮助。

n = [1,2,3]

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

更好:

for x in range(1,4):
    execfile('C:/a{}.py'.format(x))

你可以这样做:

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

就个人而言,我真的更喜欢使用字符串格式而不是连接(对各种数据类型更稳健)。此外,没有理由保留这样的列表,它可以替换为 range

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

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

也就是说,Marcin 使用的 format 命令在技术上更像 pythonic。不过我个人觉得它过于冗长。

我认为字符串连接是性能最高的选项,但性能真的不应该是这里的决定因素。

回顾一下:

Python 解决方案:

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