复制文件(如果尚不存在)

时间:2013-12-16 16:33:15

标签: python file file-io

我对python很新,我想知道如何将文件从一个位置复制并粘贴到另一个位置,首先检查复制的文件是否存在于目标文件夹中?

我想检查文件是否存在的原因是这个脚本将放在任务调度程序上并按照设定的时间表运行,所以我不想每次都复制所有内容,只是那些没有复制的文件t存在于目标文件夹中?

提前致谢!

1 个答案:

答案 0 :(得分:0)

在Python中,经常可以看到在运行代码时会遇到错误,称为exceptions。因此,try/catch已部署。

以下是我日常使用的代码片段,从目录中清除文件,如果不存在则会跳过。

def DeleteFile(Path_):
    """Deletes saved project AND its corresponding "files" folder."""
    try: #deletes the folder
        os.remove(Path_)
    except OSError:
        pass
    try: #deletes the file, using some fancy python operations to arrive at the filename
        shutil.rmtree(os.path.join(os.path.dirname(Path_),os.path.splitext(os.path.basename(Path_))[0])+"_files", True)
    except OSError:
        pass

这是检查文件是否存在的典型示例。您可以尝试复制文件,而不是在try语句中删除。如果失败,它会转到pass,只会跳过try/catch块。

请注意,try/catch可用于捕获任何异常,或者可用于捕获specific ones。我已经潦草地写了OSError,但仔细阅读它们以确保它是你想要的那个。如果您在catch中遇到特定错误,并且系统发出了错误的错误,那么您的try/catch将无法按照您希望的方式运行。所以,确定。在最好的情况下,一般。

快乐的编码!

编辑:值得注意的是,这个try/catch系统是一种非常 Pythonic 方式。 try/catch非常容易和受欢迎,但您的情况可能需要不同的东西。

编辑:我不确定是否值得注意这一点,但我发现我的答案并没有直接告诉你如何检查文件是否存在。相反,它假定它没有并且仍然继续操作。如果你遇到问题(即它存在并且你需要覆盖),你可以使它自动跳过整个事情然后进入下一个问题。同样,这只是完成相同任务的众多方法之一。