91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Python實現拷貝/刪除文件夾

發布時間:2021-04-13 10:13:22 來源:億速云 閱讀:137 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關怎么使用Python實現拷貝/刪除文件夾,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1. 拷貝文件夾

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

注:shutil.copytree實現

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)
  #更改權限(win7會出現權限問題)
  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):
 ''' 刪除出錯處理 '''
 #更改權限(win7會出現權限問題)
 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實現文件夾遞歸拷貝

目標:

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

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

Python安裝:

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

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

編寫腳本:

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

要點有兩個:

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

腳本如下:

###################################################### -*- coding: GBK -*-
# 文件自動備份腳本
# 作者:阿凡提
import os
import shutil
# 設置待備份的源文件夾及存放備份文件的目標文件夾
srcDir = "f:\\src"
dstDir = "f:\\dst"
# 目錄遞歸拷貝函數
def dir_copyTree(src, dst):
  names = os.listdir(src)
  # 目標文件夾不存在,則新建
  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:
      # 是文件夾則遞歸調用本拷貝函數,否則直接拷貝文件
      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
# 備份函數
def dir_backup():
  global srcDir
  global dstDir
  print "源文件夾" + srcDir
  print "目標文件夾" + dstDir
  print "本次拷貝文件:"
  dir_copyTree(srcDir, dstDir)
  # 將此句注釋則會一閃而過,方便自動備份
  raw_input ("備份完成")
# 執行備份函數
dir_backup()
#####################################################

結合Windows的任務計劃程序定時運行此腳本,即可實現自動備份的目的。

python 文件夾復制加強版

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

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')

關于“怎么使用Python實現拷貝/刪除文件夾”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乾安县| 西藏| 来安县| 稻城县| 宣恩县| 扎鲁特旗| 新沂市| 淮滨县| 吉安市| 万盛区| 稻城县| 凌海市| 承德县| 左权县| 昌江| 博乐市| 南郑县| 清新县| 麻城市| 南康市| 普洱| 平原县| 赤峰市| 离岛区| 巴东县| 阿荣旗| 浮梁县| 长子县| 余干县| 八宿县| 固原市| 灵台县| 双牌县| 伊宁县| 安塞县| 巴南区| 巨鹿县| 双鸭山市| 尉氏县| 鹤山市| 沾益县|