最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)拷貝/刪除文件夾的方法詳解

 更新時間:2018年08月29日 11:30:32   作者:Hardy-Lee  
這篇文章主要介紹了Python實現(xiàn)拷貝/刪除文件夾的方法,涉及Python針對文件夾的遞歸、遍歷、拷貝、刪除等相關(guān)操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了Python實現(xiàn)拷貝 刪除文件夾的方法。分享給大家供大家參考,具體如下:

1. 拷貝文件夾

from shutil import copytree, ignore_patterns
copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))

注:shutil.copytree實現(xiàn)

def copytree(src, dst, symlinks=False, ignore=None):
  names = os.listdir(src)
  if ignore is not None:
    ignored_names = ignore(src, names)
  else:
    ignored_names = set()
  os.makedirs(dst)
  errors = []
  for name in names:
    if name in ignored_names:
      continue
    srcname = os.path.join(src, name)
    dstname = os.path.join(dst, name)
    try:
      if symlinks and os.path.islink(srcname):
        linkto = os.readlink(srcname)
        os.symlink(linkto, dstname)
      elif os.path.isdir(srcname):
        copytree(srcname, dstname, symlinks, ignore)
      else:
        copy2(srcname, dstname)
      # XXX What about devices, sockets etc.?
    except (IOError, os.error) as why:
      errors.append((srcname, dstname, str(why)))
    # catch the Error from the recursive copytree so that we can
    # continue with other files
    except Error as err:
      errors.extend(err.args[0])
  try:
    copystat(src, dst)
  except WindowsError:
    # can't copy file access times on Windows
    pass
  except OSError as why:
    errors.extend((src, dst, str(why)))
  if errors:
    raise Error(errors)

2. 刪除文件夾

#! /usr/bash/python
# encoding:utf-8
import os
import os.path
import stat
import shutil
class DelDir:
 ''' 刪除指定根目錄下特定文件夾 '''
 def __init__(self, root, dirname):
 self.root = root
 self.dirname = dirname
 def run(self):
 for r, dirs, files in os.walk(self.root):
  if self.dirname in dirs:
  srcDir = os.path.join(r, self.dirname)
  #更改權(quán)限(win7會出現(xiàn)權(quán)限問題)
  os.chmod(srcDir, stat.S_IREAD | stat.S_IWRITE)
  result = shutil.rmtree(srcDir, False, self.__handler)
  print "%s" %(srcDir)
 def __handler(self, function, path, excinfo):
 ''' 刪除出錯處理 '''
 #更改權(quán)限(win7會出現(xiàn)權(quán)限問題)
 os.chmod(path, stat.S_IREAD | stat.S_IWRITE)
 function(path)
 print "[Handler] ==> Path:%s \n\tHandler the Error: %s" %(path, excinfo)
if __name__ == '__main__':
 rootdir = r"E:\workspace\minioffice\mini-core\src\main\webapp" # 需要處理的文件夾
 rootdir = unicode(rootdir, "utf8")
 dirname = ".svn" # 刪除的文件夾
 c = DelDir(rootdir, dirname)
 c.run()

Python實現(xiàn)文件夾遞歸拷貝

目標(biāo):

1.多層文件夾嵌套,在要備份的文件夾中嵌套多個文件夾

2.增量備份,因為文件較多,且之前已有部分備份,所以只需對新增的文件進(jìn)行備份,提升效率

Python安裝:

1.下載安裝包,http://www.python.org/getit/,可以選擇Python2或3,2的兼容性更好

2.添加Python安裝目錄如D:\Program\Python到環(huán)境變量Path中

編寫腳本:

Python中自身有文件夾拷貝的API,但有諸多限制,不能滿足需求,所以自己實現(xiàn)

要點有兩個:

1.遞歸拷貝,因為有多層嵌套文件夾,所以用遞歸實現(xiàn)
2.錯誤處理,要考慮文件夾不存在的情況

腳本如下:

###################################################### -*- coding: GBK -*-
# 文件自動備份腳本
# 作者:阿凡提
import os
import shutil
# 設(shè)置待備份的源文件夾及存放備份文件的目標(biāo)文件夾
srcDir = "f:\\src"
dstDir = "f:\\dst"
# 目錄遞歸拷貝函數(shù)
def dir_copyTree(src, dst):
  names = os.listdir(src)
  # 目標(biāo)文件夾不存在,則新建
  if not os.path.exists(dst):
    os.mkdir(dst)
  # 遍歷源文件夾中的文件與文件夾
  for name in names:
    srcname = os.path.join(src, name)
    dstname = os.path.join(dst, name)
    try:
      # 是文件夾則遞歸調(diào)用本拷貝函數(shù),否則直接拷貝文件
      if os.path.isdir(srcname):
        dir_copyTree(srcname, dstname)
      else:
        if (not os.path.exists(dstname)
          or ((os.path.exists(dstname))
            and (os.path.getsize(dstname) != os.path.getsize(srcname)))):
          print dstname
          shutil.copy2(srcname, dst)
    except:
      error.traceback();
      raise
# 備份函數(shù)
def dir_backup():
  global srcDir
  global dstDir
  print "源文件夾" + srcDir
  print "目標(biāo)文件夾" + dstDir
  print "本次拷貝文件:"
  dir_copyTree(srcDir, dstDir)
  # 將此句注釋則會一閃而過,方便自動備份
  raw_input ("備份完成")
# 執(zhí)行備份函數(shù)
dir_backup()
#####################################################

結(jié)合Windows的任務(wù)計劃程序定時運行此腳本,即可實現(xiàn)自動備份的目的。

python 文件夾復(fù)制加強版

shutil模塊主要用于文件夾的操作。其中copytree用來對文件夾進(jìn)行復(fù)制,但是比較遺憾的是,如果目標(biāo)文件已經(jīng)存在的話,該函數(shù)就會報錯拋異常了,非常地不給力。求人不如求已,看到幫助文檔中有此方法的源碼,就修改了一下,使其默認(rèn)可以支持文件和文件夾的覆蓋。

import os
import os.path
import shutil
def copytree(src, dst, symlinks=False):
  names = os.listdir(src)
  if not os.path.isdir(dst):
    os.makedirs(dst)
  errors = []
  for name in names:
    srcname = os.path.join(src, name)
    dstname = os.path.join(dst, name)
    try:
      if symlinks and os.path.islink(srcname):
        linkto = os.readlink(srcname)
        os.symlink(linkto, dstname)
      elif os.path.isdir(srcname):
        copytree(srcname, dstname, symlinks)
      else:
        if os.path.isdir(dstname):
          os.rmdir(dstname)
        elif os.path.isfile(dstname):
          os.remove(dstname)
        shutil.copy2(srcname, dstname)
      # XXX What about devices, sockets etc.?
    except (IOError, os.error) as why:
      errors.append((srcname, dstname, str(why)))
    # catch the Error from the recursive copytree so that we can
    # continue with other files
    except OSError as err:
      errors.extend(err.args[0])
  try:
    copystat(src, dst)
  except WindowsError:
    # can't copy file access times on Windows
    pass
  except OSError as why:
    errors.extend((src, dst, str(why)))
  if errors:
    raise Error(errors)
if __name__ == '__main__':
  copytree('E:/book', 'E:/newbook')

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python文本文件操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • flask框架實現(xiàn)修改密碼和免密登錄功能

    flask框架實現(xiàn)修改密碼和免密登錄功能

    flask是python web開發(fā)的常用框架之一。本文將講述flask如何實現(xiàn)修改密碼和免密登錄功能
    2021-05-05
  • Centos Python2 升級到Python3的簡單實現(xiàn)

    Centos Python2 升級到Python3的簡單實現(xiàn)

    下面小編就為大家?guī)硪黄狢entos Python2 升級到Python3的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 用Python畫一個LinkinPark的logo代碼實例

    用Python畫一個LinkinPark的logo代碼實例

    這篇文章主要介紹了用Python畫一個LinkinPark的logo代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Django Xadmin多對多字段過濾實例

    Django Xadmin多對多字段過濾實例

    這篇文章主要介紹了Django Xadmin多對多字段過濾實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python中os模塊的簡單使用及重命名操作

    Python中os模塊的簡單使用及重命名操作

    這篇文章主要給大家介紹了關(guān)于Python中os模塊的簡單使用及重命名操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python實現(xiàn)彈球小游戲

    Python實現(xiàn)彈球小游戲

    這篇文章主要介紹了Python實現(xiàn)彈球小游戲的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • 詳解OpenCV中直方圖,掩膜和直方圖均衡化的實現(xiàn)

    詳解OpenCV中直方圖,掩膜和直方圖均衡化的實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了OpenCV中直方圖、掩膜、直方圖均衡化詳細(xì)介紹及代碼的實現(xiàn),文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-11-11
  • python實現(xiàn)剪貼板的操作

    python實現(xiàn)剪貼板的操作

    本文主要介紹了python實現(xiàn)剪貼板的操作,通過輸入一個命令行參數(shù),實現(xiàn)將特定的一些文本復(fù)制到剪貼板的操作。感興趣的可以了解一下
    2021-07-07
  • 關(guān)于安裝halcon包pycharm提示不全的問題

    關(guān)于安裝halcon包pycharm提示不全的問題

    很多小伙伴給小編反映在pycham上面安裝halcon對應(yīng)的安裝包之后,導(dǎo)入出現(xiàn)問題,發(fā)現(xiàn)輸入ha.read 沒有自動提示 ,只有幾個變量和方法,怎么解決這個問題呢,下面小編給大家?guī)砹税惭bhalcon包pycharm提示不全的問題,一起看看吧
    2021-06-06
  • Python?list列表查找元素詳情

    Python?list列表查找元素詳情

    這篇文章主要介紹了Python?list列表查找元素詳情,Python?列表(list)提供了?index和count方法,它們都可以用來查找元素,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價價值,需要的朋友可以參考一下
    2022-06-06

最新評論

和硕县| 武功县| 伽师县| 罗甸县| 天峻县| 黎城县| 汽车| 奈曼旗| 扶余县| 海原县| 洛扎县| 西和县| 三门峡市| 叙永县| 和硕县| 建水县| 义乌市| 门头沟区| 金溪县| 南京市| 长宁县| 福清市| 聊城市| 葵青区| 吴旗县| 前郭尔| 涪陵区| 进贤县| 邯郸县| 灵武市| 包头市| 沙湾县| 壤塘县| 广灵县| 诏安县| 远安县| 平定县| 阿尔山市| 平遥县| 陆丰市| 石阡县|