• Python的文件拷贝和删除


    Python通过写文件的形式做到拷贝的功能,而文件删除则可以用remove,或者空目录删除用removedirs,rmdir。

    由于最近遇到了文件拷贝和删除的问题,发现Python提供的这几个方法都不够方便:

    1、不能以命令的形式拷贝文件;

    2、不能删除一个非空的目录。

    那么怎么解决呢?

    还是使用OS的Shell吧。

    以Windows为例:

    拷贝使用xcopy /s /y /q sourcepath destpath

    删除呢?写了个删除整个目录的代码:

     1 import os
     2 import re
     3 
     4 def DelSameFolder(dir, folder_name):
     5 """
     6 删除某一目录下具有相同名称的非空子目录
     7 """
     8   pattern = "^" + folder_name + "$"
     9   for li in os.listdir(dir):
    10     if re.search(pattern, li):
    11       delfolder = os.path.join(dir, li)
    12       commandline = "rd /S /Q \"" + delfolder + "\""
    13       os.system(commandline)
    14   newdir = os.listdir(dir)
    15   foldersdir = [os.path.join(dir, li) for li in newdir if len(li.split('.'))<2]
    16   for li in foldersdir:
    17     DelSameFolder(li, folder_name)

    这段代码删除了某一目录下具有相同名字的所有子文件夹。当时的目的是为了删除项目文件中的CVS目录,由于手动删除工作需要一定的体力和耐力,因此懒人还是决定用懒办法——写代码。

    怎么查找要删除的目标文件夹呢?使用了正则表达式。

    怎样解决所有可能存在的子文件夹呢?递归。

    为什么不先删除目标文件夹下的所有文件再删除这个空的目标文件夹呢?因为它下面可能还有很多非空的子文件夹,那又要递归了……逻辑变得复杂。

    以上便简单的解决了目前的问题。

    Author:dulvyizhihua
  • 相关阅读:
    010:请教STM32用JLINK V8 SWD输出调试信息到ITM Viewer的问题(转)
    014:针对mdk中STM32程序无法使用printf,产生停留BEAB BKPT 0xAB处问题的解决(转)
    011:Nuvoton(新唐) Cortex M0 使用semihost输入输出办法(转)
    015:6步教你在STM32程序中添加 printf函数(转)
    js定时和离开当前页面事件 明天
    linux常用命令 明天
    mongoDB常用命令 明天
    自定义标签的使用 明天
    浏览器事件 明天
    SonarQube简介
  • 原文地址:https://www.cnblogs.com/dulvyizhihua/p/1345104.html
Copyright © 2020-2023  润新知