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

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

 更新時(shí)間:2013年12月23日 11:39:27   作者:  
最近在備份手機(jī)上的照片的時(shí)候,純手工操作覺(jué)得有些麻煩,就想寫個(gè)腳本自動(dòng)進(jìn)行。因?yàn)閭浞莸臅r(shí)候有些照片以前備份過(guò)了,所以需要有個(gè)判重操作,看下面的實(shí)現(xiàn)代碼

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

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

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

    # 對(duì)源文件夾中的每個(gè)文件若不存在于目的文件夾則復(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ù)制,否則無(wú)操作。
        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ù)來(lái)遍歷源文件夾src和目標(biāo)文件夾dst,得到兩個(gè)文件列表,但由于我需要判重操作,因此需要在dst文件列表中進(jìn)行查詢操作。由于列表的查詢效率不高,而字典是一個(gè)哈希表,查詢效率較高,因此我將目標(biāo)文件列表轉(zhuǎn)換成一個(gè)只有鍵沒(méi)有值的字典:

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

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

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

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

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

完整代碼如下:

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

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

# 輸入兩個(gè)文件夾a和b路徑,將a中的文件拷進(jìn)b,并計(jì)算拷貝的文件數(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

    # 對(duì)源文件夾中的每個(gè)文件若不存在于目的文件夾則復(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ù)制,否則無(wú)操作。
        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)文章

  • Python文件去除注釋的方法

    Python文件去除注釋的方法

    這篇文章主要介紹了Python文件去除注釋的方法,涉及Python正則表達(dá)式及文件操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python實(shí)現(xiàn)自動(dòng)玩連連看的腳本分享

    Python實(shí)現(xiàn)自動(dòng)玩連連看的腳本分享

    最近女朋友在玩連連看,玩了一個(gè)星期了還沒(méi)通關(guān),真的是菜。實(shí)在是看不過(guò)去了,直接用python寫了個(gè)腳本代碼可以自動(dòng)玩連連看,感興趣的可以了解一下
    2022-04-04
  • np.concatenate()函數(shù)數(shù)組序列參數(shù)的實(shí)現(xiàn)

    np.concatenate()函數(shù)數(shù)組序列參數(shù)的實(shí)現(xiàn)

    本文主要介紹了np.concatenate()函數(shù)數(shù)組序列參數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Centos下實(shí)現(xiàn)安裝Python3.6和Python2共存

    Centos下實(shí)現(xiàn)安裝Python3.6和Python2共存

    這篇文章主要介紹了Centos下實(shí)現(xiàn)安裝Python3.6和Python2共存,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • xpath無(wú)法定位tbody標(biāo)簽解決方法示例

    xpath無(wú)法定位tbody標(biāo)簽解決方法示例

    這篇文章主要介紹了xpath無(wú)法定位tbody標(biāo)簽解決方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Python讀寫二進(jìn)制文件的實(shí)現(xiàn)

    Python讀寫二進(jìn)制文件的實(shí)現(xiàn)

    本文主要介紹了Python讀寫二進(jìn)制文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python基于opencv實(shí)現(xiàn)的人臉識(shí)別(適合初學(xué)者)

    Python基于opencv實(shí)現(xiàn)的人臉識(shí)別(適合初學(xué)者)

    OpenCV是一個(gè)基于BSD許可開(kāi)源發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),下面這篇文章主要給大家介紹了關(guān)于Python基于opencv實(shí)現(xiàn)的人臉識(shí)別,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),本文的教程非常適合初學(xué)者,需要的朋友可以參考下
    2022-03-03
  • Python實(shí)現(xiàn)PPT幻燈片的添加、刪除或隱藏操作

    Python實(shí)現(xiàn)PPT幻燈片的添加、刪除或隱藏操作

    PowerPoint文檔是商務(wù)、教育、創(chuàng)意等各領(lǐng)域常見(jiàn)的用于展示、教育和傳達(dá)信息的格式,在制作PPT演示文稿時(shí),靈活地操作幻燈片是提高演示效果、優(yōu)化內(nèi)容組織的關(guān)鍵步驟,本文給大家介紹了Python 操作PPT幻燈片- 添加、刪除、或隱藏幻燈片,需要的朋友可以參考下
    2024-08-08
  • Python實(shí)現(xiàn)GUI計(jì)算器(附源碼)

    Python實(shí)現(xiàn)GUI計(jì)算器(附源碼)

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言實(shí)現(xiàn)GUI計(jì)算器,可執(zhí)行復(fù)雜運(yùn)算,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2022-11-11
  • 利用Python實(shí)現(xiàn)讀取照片的Exif信息

    利用Python實(shí)現(xiàn)讀取照片的Exif信息

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)讀取照片的Exif信息,文中的示例代碼簡(jiǎn)潔易懂,具有一定的參考價(jià)值,有需要的小伙伴可以參考下
    2023-10-10

最新評(píng)論

浏阳市| 微山县| 留坝县| 宝山区| 利津县| 佛山市| 界首市| 淄博市| 夏津县| 遂昌县| 石河子市| 崇仁县| 富裕县| 白山市| 马鞍山市| 宁安市| 白玉县| 金山区| 梁平县| 凌海市| 卫辉市| 洛扎县| 朝阳县| 安义县| 荃湾区| 佛学| 济阳县| 绥江县| 双辽市| 阿克| 临西县| 彩票| 邢台市| 四平市| 葫芦岛市| 南丰县| 全州县| 浏阳市| 依安县| 察隅县| 丰顺县|