欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python復(fù)制文件代碼實現(xiàn)

 更新時間:2013年12月23日 11:39:27   作者:  
最近在備份手機上的照片的時候,純手工操作覺得有些麻煩,就想寫個腳本自動進(jìn)行。因為備份的時候有些照片以前備份過了,所以需要有個判重操作,看下面的實現(xiàn)代碼

主要功能在copyFiles()函數(shù)里實現(xiàn),如下:

復(fù)制代碼 代碼如下:

def copyFiles(src, dst):
    srcFiles = os.listdir(src)
    dstFiles = dict(map(lambda x:[x, ''], os.listdir(dst)))
    filesCopiedNum = 0

    # 對源文件夾中的每個文件若不存在于目的文件夾則復(fù)制
    for file in srcFiles:
        src_path = os.path.join(src, file)
        dst_path = os.path.join(dst, file)
        # 若源路徑為文件夾,若存在于目標(biāo)文件夾,則遞歸調(diào)用本函數(shù);否則先創(chuàng)建再遞歸。
        if os.path.isdir(src_path):
            if not os.path.isdir(dst_path):
                os.makedirs(dst_path) 
            filesCopiedNum += copyFiles(src_path, dst_path)
        # 若源路徑為文件,不重復(fù)則復(fù)制,否則無操作。
        elif os.path.isfile(src_path):               
            if not dstFiles.has_key(file):
                shutil.copyfile(src_path, dst_path)
                filesCopiedNum += 1

    return filesCopiedNum

這里我首先使用os.listdir()函數(shù)來遍歷源文件夾src和目標(biāo)文件夾dst,得到兩個文件列表,但由于我需要判重操作,因此需要在dst文件列表中進(jìn)行查詢操作。由于列表的查詢效率不高,而字典是一個哈希表,查詢效率較高,因此我將目標(biāo)文件列表轉(zhuǎn)換成一個只有鍵沒有值的字典:

復(fù)制代碼 代碼如下:

dstFiles = dict(map(lambda x:[x, ''], os.listdir(dst)))

然后我遍歷源文件列表,若該路徑是一個文件夾,先判斷該文件夾在目標(biāo)路徑中是否存在,若不存在,則先創(chuàng)建一個新路徑。然后遞歸調(diào)用本函數(shù)。其實不存在的時候更高效的方法是調(diào)用shutil.copytree()函數(shù),但由于此處需要計算拷貝的文件數(shù)量,因此就沒有調(diào)用該函數(shù)。

若該路徑是一個文件,則首先判斷該文件在目標(biāo)文件夾中是否存在。若不存在,則拷貝。

由于寫這個腳本主要是為了同步手機相冊到PC,因此只簡單地判斷一下文件名。若要判斷不同名但相同的文件,則可以繼續(xù)判斷一下md5值,這里就不再贅述。

完整代碼如下:

復(fù)制代碼 代碼如下:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# 輸入兩個文件夾a和b路徑,將a中的文件拷進(jìn)b,并計算拷貝的文件數(shù)。重復(fù)的不作處理。

import os
import shutil

def copyFiles(src, dst):
    srcFiles = os.listdir(src)
    dstFiles = dict(map(lambda x:[x, ''], os.listdir(dst)))
    filesCopiedNum = 0

    # 對源文件夾中的每個文件若不存在于目的文件夾則復(fù)制
    for file in srcFiles:
        src_path = os.path.join(src, file)
        dst_path = os.path.join(dst, file)
        # 若源路徑為文件夾,若存在于目標(biāo)文件夾,則遞歸調(diào)用本函數(shù);否則先創(chuàng)建再遞歸。
        if os.path.isdir(src_path):
            if not os.path.isdir(dst_path):
                os.makedirs(dst_path) 
            filesCopiedNum += copyFiles(src_path, dst_path)
        # 若源路徑為文件,不重復(fù)則復(fù)制,否則無操作。
        elif os.path.isfile(src_path):               
            if not dstFiles.has_key(file):
                shutil.copyfile(src_path, dst_path)
                filesCopiedNum += 1

    return filesCopiedNum

def test():
    src_dir = os.path.abspath(raw_input('Please enter the source path: '))
    if not os.path.isdir(src_dir):
        print 'Error: source folder does not exist!'
        return 0

    dst_dir = os.path.abspath(raw_input('Please enter the destination path: '))
    if os.path.isdir(dst_dir):
        num = copyFiles(src_dir, dst_dir)
    else:
        print 'Destination folder does not exist, a new one will be created.'
        os.makedirs(dst_dir)
        num = copyFiles(src_dir, dst_dir)

    print 'Copy complete:', num, 'files copied.'

if __name__ == '__main__':
    test()

相關(guān)文章

  • 解析pandas apply() 函數(shù)用法(推薦)

    解析pandas apply() 函數(shù)用法(推薦)

    這篇文章主要介紹了pandas apply() 函數(shù)用法,大家需要掌握函數(shù)作為一個對象,能作為參數(shù)傳遞給其它函數(shù),也能作為函數(shù)的返回值,具體內(nèi)容詳情跟隨小編一起看看吧
    2021-10-10
  • Python+OpenCV檢測燈光亮點的實現(xiàn)方法

    Python+OpenCV檢測燈光亮點的實現(xiàn)方法

    這篇文章主要介紹了Python+OpenCV檢測燈光亮點的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 基于Python+Turtle實現(xiàn)繪制簡易的大風(fēng)車

    基于Python+Turtle實現(xiàn)繪制簡易的大風(fēng)車

    大風(fēng)車,吱呀吱呦呦地轉(zhuǎn),這里的風(fēng)景呀真好看!天好看,地好看……一首熟悉的歌曲,是否已經(jīng)把你拉回了童年?本文將用Turtle庫繪制簡易的大風(fēng)車,需要的可以參考一下
    2022-06-06
  • 基于Python實現(xiàn)PDF批量轉(zhuǎn)化工具

    基于Python實現(xiàn)PDF批量轉(zhuǎn)化工具

    這篇文章主要為大家詳細(xì)介紹了如何基于Python制作一個PDF批量轉(zhuǎn)化工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • python中判斷文件編碼的chardet(實例講解)

    python中判斷文件編碼的chardet(實例講解)

    下面小編就為大家分享一篇python中判斷文件編碼的chardet(實例講解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 基于BCEWithLogitsLoss樣本不均衡的處理方案

    基于BCEWithLogitsLoss樣本不均衡的處理方案

    這篇文章主要介紹了BCEWithLogitsLoss樣本不均衡的處理方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python實現(xiàn)批量備份交換機配置+自動巡檢

    Python實現(xiàn)批量備份交換機配置+自動巡檢

    這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)批量備份交換機配置+自動巡檢的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • macbook如何徹底刪除python的實現(xiàn)方法

    macbook如何徹底刪除python的實現(xiàn)方法

    本文主要介紹了macbook如何徹底刪除python的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Python使用Socket實現(xiàn)簡單聊天程序

    Python使用Socket實現(xiàn)簡單聊天程序

    這篇文章主要介紹了Python使用Socket實現(xiàn)簡單聊天程序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • DRF之請求與響應(yīng)的實現(xiàn)

    DRF之請求與響應(yīng)的實現(xiàn)

    本文主要介紹了DRF請求與響應(yīng)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07

最新評論