Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.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_Shutil - Fatal编程技术网

python文件被移动/复制后如何删除?

python文件被移动/复制后如何删除?,python,shutil,Python,Shutil,我希望将源目录中的zip复制/移动到dst位置。zip被复制到dist路径。但是,如何删除源目录文件?我尝试了move选项,它删除了源目录文件,但是如果存在具有现有名称的zip,move命令无法移动zip。copy方法工作并简单地覆盖它,但在source_dir中留下一个zip。下面是我的代码,它复制成功,但zip文件并没有从源目录中删除。我做错了什么 def Movezips(self, email): time.sleep(2) print("s

我希望将源目录中的zip复制/移动到dst位置。zip被复制到dist路径。但是,如何删除源目录文件?我尝试了move选项,它删除了源目录文件,但是如果存在具有现有名称的zip,move命令无法移动zip。copy方法工作并简单地覆盖它,但在source_dir中留下一个zip。下面是我的代码,它复制成功,但zip文件并没有从源目录中删除。我做错了什么

  def Movezips(self, email):
        time.sleep(2)
        print("starting moving")
        source_dir = 'C:/Download'+email+'/'
        dst = 'E:/BackUpZip/'+email
        Path(dst).mkdir(parents=True, exist_ok=True)
        dst=dst+'/'
        files = glob.iglob(os.path.join(source_dir, "*.zip"))
        for file in files:
             if os.path.isfile(file):
                shutil.copy(file, dst)

        for file in files:
            if os.path.isfile(file):
                shutil.rmtree(file)

您可以使用os而不是shutil来删除文件夹和文件

要删除文件,可以使用
os.remove(“文件名”)

要删除文件夹,可以使用
os.rmdir(“foldername”)

或者你可以试着用shutil

'shutil.move(文件、dst、复制_function=copy)'


移动的默认
copy\u功能是
copy2
,但正如您所说的
copy
对您有效,这可能也有效

我设法解决了我遇到的问题。最后只是删除了额外的代码

files = glob.iglob(os.path.join(source_dir, "*.zip"))
        for file in files:
             if os.path.isfile(file):
                shutil.copy(file, dst)
                os.remove(file)

“但是,如果存在具有现有名称的zip,move命令无法移动zip。”哈?对不起,我的意思是shutil.move(文件,dst)可以将zip从源移动到dst,而无需在源文件夹中保留副本。但如果dst中已经有同名的zip,则会失败。只是一个一般性建议,尝试使用
pathlib.Path
,您将大量混合
os
,但请坚持其中一个。在任何情况下,在windows上,如果文件已经存在,则必须
删除该文件,然后才能尝试
将其移动到该名称。您可以使用
os.rename
os.remove
或使用
target=Path(target);target.unlink();source.move(target)
其中
source
是一些
路径
对象您可能应该使用更现代的
路径库
而不是笨重的
操作系统
模块。