在python中使用`try``except`在不同目录上重复完全相同的代码

我正在编写一个 python 脚本,将不同文件中的信息解析为 pandas 数据帧。一开始是针对某个目录,然后调用命令解析多个文件的信息。但是,如果该目录不存在,我应该执行完全相同的代码,但在另一个目录中。为了说明,它应该是这样的:


import os

try:

    cwd = "/path/do/dir"

    os.chdir(cwd)

    #do a code block here


except FileNotFoundError: # i.e. in case /path/to/dir does not exist

    cwd = /path/to/anotherDir

    os.chdir(cwd)

    # do the same code block

我目前正在做的是在块中try和块中重复相同的代码except块,尽管我想知道是否有更优雅的方法,比如将整个代码块分配给变量或函数,然后调用它中的变量/函数except chunk。


月关宝盒
浏览 176回答 2
2回答

沧海一幻觉

您可以简单地遍历路径列表,并为每个文件尝试您的代码块。如果您想在找到可行的路径后立即停止迭代,您甚至可以在块break的末尾添加 a。trypaths = ['path/to/dir', 'path/to/other/dir']for cwd in paths:    try:        os.chdir(cwd)        # code that may fail here        break    except FileNotFoundError:        # This will NOT cause the code to fail; it's the same as `pass` but        # more informative        print("File not found:", cwd)

12345678_0001

简单地检查目录/文件是否存在不是更好吗?import osif os.path.isdir('some/path') and os.path.isfile('some/path/file.txt'):    os.chdir('some/path')else:    os.chdir('other/path')#code block here当然,这假设在“#code 块”中没有其他问题可以出错。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python