动态文件创建(命名)

2024-05-03 10:24:36 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中是否可以执行以下操作?你知道吗

i=1
    while True: 
      w = open("POSCAR_i","w")
      i=i+1
      if i<10:
        break

所以基本上,它应该通过POSCAR_10创建POSCAR_1。你知道吗

谢谢你。你知道吗


Tags: trueifopenbreakwhileposcar
3条回答

您可以使用str.format将i作为变量传入:

w = open("POSCAR_{}".format(i),"w") 

如果你想要1-10,for循环也可以。你知道吗

for i in range(1,11):
    w = open("POSCAR_{}".format(i),"w")

但是w每次都会被重新分配。你知道吗

您需要使用if i==10,否则您的循环将直接结束,因为i最初是< 10

可以使用i <=10作为条件并删除if语句:

i=1
while i <= 10:
   with open("POSCAR_{}".format(i),"w") as w: # with will close your files automatically
       i+=1

问题是您的break语句是在第一次迭代时执行的。 i变量确实小于10,因此循环终止。你知道吗

你需要做的是:

i = 1
while True:
    w = open("POSCAR_%d" % i, "w")
    w.close()
    i += 1
    if i == 10:
        break

完成文件对象后不要忘记关闭它(在本例中是立即关闭)。你知道吗


也可以将终止条件放入循环的定义中:

i = 1
while i <= 10:
    w = open("POSCAR_%d" % i, "w")
    w.close()
    i += 1

使用for循环更具python风格(而且更好):

for idx in range(1,11):
    f = open("POSCAR_%d" % idx, "w")
    f.close()

您还可以使用format()方法,这是现在官方首选的方法,尽管%运算符在野外仍然非常常见。你知道吗

相关问题 更多 >