循环变量和文件名的命名

时间:2017-07-10 23:48:18

标签: arrays python-3.x loops naming

我希望看看是否可以压缩以下代码。我知道我需要使用数组和循环语句,但我所尝试的并没有奏效。我经常会收到一个错误,说我不能使用一个字符串或间隔应该是的列表,这可能意味着循环不是实际发生的?

writef1startsw1pt1 = open("C:/f1startsw1.txt", "w")
writef1startsw2pt1 = open("C:/f1startsw2.txt", "w")
writef1startsw3pt1 = open("C:/f1startsw3.txt", "w")
writef1startsw4pt1 = open("C:/f1startsw4.txt", "w")
writef1startsw5pt1 = open("C:/f1startsw5.txt", "w")
writef1startsw6pt1 = open("C:/f1startsw6.txt", "w")
writef1startsw7pt1 = open("C:/f1startsw7.txt", "w")

唯一需要改变的是变量中的数字和文件名中的数字,范围从1到7。

我确定解决方案并不复杂,但我花了一段时间试图解决这个问题,而且我仍然难倒。谢谢!

2 个答案:

答案 0 :(得分:1)

在Python中不可能进行类似的变量名称替换,但是,您可以使用列表来实现相同的目标。

writef1startswpt1 = []
for i in range (1,8):
    writef1startswpt1.append(open("C:/f1startsw" + str(i)+ ".txt", "w"))

#Now you have a list of those 7 open files, and you can access them with the indices 0 - 6

答案 1 :(得分:0)

我会使用字典而不是列表来跟踪文件,因为列表索引从0开始,而文件从1开始(或者您可以使用简单地在索引0处保留None条目。 / p>

files = {}
for i in range(1, 7+1):
    files["writef1startsw{}pt1".format(i)] = open("C:/f1startsw{}.txt".format(i), "w")

files["writef1startsw1pt1"] #first file

如果您更喜欢使用列表,则可以执行以下操作:

files = [None]

for i in range(1, 7+1):
    files.append(open("C:/f1startsw{}.txt".format(i), "w"))

files[1] #first file