【问题标题】:Skip all lines in try if one line fails [closed]如果一行失败,则跳过所有行尝试[关闭]
【发布时间】:2015-04-02 19:00:37
【问题描述】:

新代码:

如果文件不在文件夹中。然后我不想制作新的目录。

import os
try:
    filename = "test123.pdf"
    folder = "someFolder"
    os.mkdir (folder)
    os.rename(filename,"someFolder\\test123.pdf")
except:
    print "File not found"

【问题讨论】:

  • 当然是切换第 3 行和第 4 行。
  • 在说不行之前请先试一下。
  • 如果您的意思是“当然,这将有助于我给出的简单示例,但对我的实际代码没有帮助”,那么请提出一个更好地反映您的问题的不同示例。跨度>
  • 请不要编辑问题并完全更改它...应该通过提出新问题来完成。
  • 不,不是同一个问题。您最初的问题询问如何在另一行之前执行一行。您的新问题询问如何使用条件语句。

标签: python python-2.7 exception


【解决方案1】:

在你的情况下,你可以在采取行动之前进行测试:

import os
try:
    filename = "test123.pdf"
    if not os.path.isfile(filename):
        raise OSError("File not found")
    folder = "someFolder"
    os.mkdir (folder)
    os.rename(filename,"someFolder\\test123.pdf")
except:
    print "File not found"

或者,如果您想处理其他问题,例如无权移动文件,请稍后解包:

import os
try:
    filename = "test123.pdf"
    folder = "someFolder"
    os.mkdir (folder)
    os.rename(filename,"someFolder\\test123.pdf")
except:
    if os.path.isdir(folder):
        os.rmdir(folder)
    print "File not found"

【讨论】:

  • 谢谢,这成功了!
【解决方案2】:

如果您只想在第 4 行成功时才运行第 3 行,那么您最好将要打印的每个字符串组合成一个数组,然后在所有行都成功后打印结果:

    print "Print ME"
    strings = []
    try:
        strings.append("1)Only print if try go through")
        strings.append(1/0) # this line will fail because of divide by zero
        strings.append("2)Only print if try go through")
        print str.join("\n", strings) # this would only print if above statements succeeded
    except:
        print "Fail"

【讨论】:

  • 以上答案是基于提出的原始问题,而不是关于创建新目录的已编辑问题。
【解决方案3】:

如果您希望仅在第 4 行成功时运行第 3 行,则需要将第 3 行与第 4 行切换。

【讨论】:

    【解决方案4】:

    虽然流行的 Python 风格是“请求宽恕而不是寻求许可”,但这似乎是一个使用“先看再跳”的好地方。在采取任何行动之前实际检查文件是否存在。

    import os
    
    filename = "test123.pdf"
    folder = "someFolder"
    if os.path.isfile(filename):
        os.mkdir (folder)
        os.rename(filename,"someFolder\\test123.pdf")
    else:
        print "file not found"
    

    【讨论】:

      【解决方案5】:

      由于这个问题现在与原来的形式完全不同,我正在添加一个新的答案。

      根据条件执行语句意味着您应该使用if 语句。

      import os
      try:
          filename = "test123.pdf"
          folder = "someFolder"
          if filename not in os.listdir(folder): # this line is the key
              os.mkdir (folder)
          os.rename(filename,"someFolder\\test123.pdf")
      except:
          print "File not found"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-15
        • 2020-04-15
        • 1970-01-01
        • 2021-10-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多