Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 动态文件创建(命名)_Python - Fatal编程技术网

Python 动态文件创建(命名)

Python 动态文件创建(命名),python,Python,可以在python中执行以下操作吗 i=1 while True: w = open("POSCAR_i","w") i=i+1 if i<10: break i=1 尽管如此: w=打开(“POSCAR_i”,“w”) i=i+1 如果i您将使用i作为变量传入: w = open("POSCAR_{}".format(i),"w") 如果您想要1-10,for循环也会这样做 for i in range(1,11):

可以在python中执行以下操作吗

i=1
    while True: 
      w = open("POSCAR_i","w")
      i=i+1
      if i<10:
        break
i=1
尽管如此:
w=打开(“POSCAR_i”,“w”)
i=i+1
如果i您将使用i作为变量传入:

w = open("POSCAR_{}".format(i),"w") 
如果您想要1-10,for循环也会这样做

for i in range(1,11):
    w = open("POSCAR_{}".format(i),"w")
但是每次都会重新分配
w

如果i==10,则需要使用
,否则循环将立即结束,因为
i
最初是
<10

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

w = open("POSCAR_{}".format(i),"w") 
如果您想要1-10,for循环也会这样做

for i in range(1,11):
    w = open("POSCAR_{}".format(i),"w")
但是每次都会重新分配
w

如果i==10,则需要使用
,否则循环将立即结束,因为
i
最初是
<10

您可以使用几乎正确的
i

i=1
while True: 
  w = open("POSCAR_%d" % i,"w")
  i=i+1
  if i>10:
    break
将工作

几乎正确

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

将起作用

问题是您的
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
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
i=1
虽然我使用for循环更具pythonic(而且更全面):

for idx in range(1,11):
    f = open("POSCAR_%d" % idx, "w")
    f.close()
您还可以使用format()方法,这是现在官方首选的方法,尽管%运算符在野外仍然非常常见。

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

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

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

基本上答案是否定的。下面是一些关于为什么不可能的信息以及一些改进

关于您的代码,有几个问题:

  • w=open(“POSCAR\u i”,“w”)
    创建了一个名为POSCAT\u i的文件。
    i
    被视为字符串的一部分。您应该使用
    w=open(“POSCAR\u%d”%i,“w”)
    而不是
    w=open(“POSCAR\u i”,“w”)
    来构造这样的字符串

  • if
    第一次执行,因为其条件已满足。在第一次迭代中,
    i=1
    ,满足条件
    i<10
    ,因此执行
    break
    。将
    if
    条件更改为
    i>10

  • 此外,最好使用
    for
    循环,而不是
    while
    循环。在这种情况下,您将不再使用
    if

  • 在将文件句柄用于其他目的之前关闭它也是一种很好的做法。或者更好的做法是使用不同的文件句柄

  • 所以我会这样写代码:

    # Previous codes
    .
    .
    .
    Files = [];
    for i in range(1,11):
        w = open("POSCAR_%d" % i, "w");
        Files.append(w);
    # Rest of the code
    .
    .
    .
    for w in Files:
        w.close();
    # End of code
    

    享受吧

    基本上答案是否定的。以下是一些关于为什么不可能的信息,以及一些改进

    关于您的代码,有几个问题:

  • w=open(“POSCAR\u i”,“w”)
    创建了一个名为POSCAT\u i的文件。
    i
    被视为字符串的一部分。您应该使用
    w=open(“POSCAR\u%d”%i,“w”)
    而不是
    w=open(“POSCAR\u i”,“w”)
    来构造这样的字符串

  • if
    第一次执行,因为其条件已满足。在第一次迭代中,
    i=1
    ,满足条件
    i<10
    ,因此执行
    break
    。将
    if
    条件更改为
    i>10

  • 此外,最好使用
    for
    循环,而不是
    while
    循环。在这种情况下,您将不再使用
    if

  • 在将文件句柄用于其他目的之前关闭它也是一种很好的做法。或者更好的做法是使用不同的文件句柄

  • 所以我会这样写代码:

    # Previous codes
    .
    .
    .
    Files = [];
    for i in range(1,11):
        w = open("POSCAR_%d" % i, "w");
        Files.append(w);
    # Rest of the code
    .
    .
    .
    for w in Files:
        w.close();
    # End of code
    

    享受吧

    您是否尝试执行此代码?你得到了什么结果?你试过执行这个代码吗?你得到了什么结果?你可以只是评论一下,这显然是一个打字错误。我不认为他在寻找一个重写的方法,只是为了让它工作——你的解决方案在逻辑上是正确的,但在语法上是正确的wrong@gkusner,这是一个怎样的重写,语法上有多错误?既然你已经修改了它,语法是正确的,你可以只是评论一下,这显然是一个打字错误。我不认为他在寻找一个重写的方法,只是为了让它工作-你的解决方案在逻辑上是正确的,但在语法上是正确的wrong@gkusner,这是一个怎样的重写和语法错误?好吧,现在你已经改变了它的语法是正确的没有。。。你测试过这个吗?更好:)但是这错过了最后一次迭代,不会产生一个错误-这很容易修复-但我认为你的答案更好,同时仍然保持原始代码的感觉不。。。你测试过这个吗?更好:)但是这错过了最后一次迭代,并且不会产生一个错误-这很容易修复-但是我认为你的答案更好,同时仍然保持原始代码的感觉