Python os 遍歷資料夾

2021-10-05 01:51:50 字數 2908 閱讀 2227

使用os庫遍歷資料夾,搜尋資料夾中的檔案,並把以檔案的修改時間作為判斷檔案是否複製搬移的依據。

os.walk(filepath)可以獲取資料夾下面的

topdown--可選,為 true,則優先遍歷 top 目錄,否則優先遍歷 top 的子目錄(預設為開啟)。如果 topdown 引數為 true,walk 會遍歷top資料夾,與top 資料夾中每乙個子目錄。

onerror-- 可選,需要乙個 callable 物件,當 walk 需要異常時,會呼叫。

followlinks-- 可選,如果為 true,則會遍歷目錄下的快捷方式(linux 下是軟連線 symbolic link )實際所指的目錄(預設關閉),如果為 false,則優先遍歷 top 的子目錄

現有需求如下,檔案的重複的標準已檔案的修改時間為準,對檔案進行遷移操作,如上傳資料夾下修改時間大於今天的檔案。且把檔案遷移動相應資料夾下並建立好預先命名的檔案;

import os

import re

from dateutil.parser import parse

import shutil

from threading import thread

dic =

base_dir = r'c:\測試'

target_dir = r'c:\搬移'

start_datetime = parse('2020/04/14') #開始時間

for root,dirs,files in os.walk(base_dir):

# if datetime.datetime(*time.localtime(os.path.getmtime(os.path.join(root)))[0:7])>=start_datetime:

for file in files:

# print(root)

if datetime.datetime(*time.localtime(os.path.getmtime(os.path.join(root,file)))[0:7])>=start_datetime:

bu = re.findall('|'.join(dic.keys()),root.replace(base_dir,target_dir))

makefilepath = root.replace(base_dir,target_dir).replace(bu[0],dic[bu[0]]) if bu != else root.replace(base_dir,target_dir)

if not os.path.exists(makefilepath):

os.makedirs(makefilepath)

shutil.copy(os.path.join(root,file),makefilepath)

print(file)

# print(dirs)

os.makedirs會遞迴建立資料夾。

dic:主要用於路徑上的檔名的轉換。

同時增設多執行緒檢查相應資料夾下的日期。加快速度。

import os

import re

import datetime

import time

from dateutil.parser import parse

import shutil

def search_file_from_dms(base_dir,target_dir,start_datetime):

dic =

base_dir1 = r'c:\測試'

print("thread start!")

start_datetime = parse(start_datetime) #開始時間

for root,dirs,files in os.walk(base_dir):

for file in files:

if datetime.datetime(*time.localtime(os.path.getmtime(os.path.join(root,file)))[0:7])>=start_datetime:

bu = re.findall('|'.join(dic.keys()),root.replace(base_dir1,target_dir))

makefilepath = root.replace(base_dir1,target_dir).replace(bu[0],dic[bu[0]]) if bu != else root.replace(base_dir1,target_dir)

if not os.path.exists(makefilepath):

os.makedirs(makefilepath)

shutil.copy(os.path.join(root,file),makefilepath)

print("thread end!")

from threading import thread

base_dir = r'd:\測試'

target_dir = r'c:\測試'

start_datetime = '2020/04/14'

files = os.listdir(base_dir)

n = 4

threads =

for f in files:

t = thread(target=search_file_from_dms,args=(os.path.join(base_dir,f),target_dir,start_datetime))

t.start()

for i in threads:

i.join()

print("all thread end!")

python OS庫 實現遍歷資料夾

python語言因簡單易學,已成為目前相對較火的程式語言,更有 人生苦短,我學python 這麼一說。今天我門就用python寫乙個遍歷電腦資料夾的程式,程式相對較為簡單小白也可以操作。os庫設計思路 實現 python版本 python 3.7 開發工具 jetbrains pycharm 201...

遍歷資料夾

function search path string filename string ball boolean false string varsearchrec tsearchrec begin if findfirst path faanyfile,searchrec 0 then begin...

資料夾遍歷

c 遍歷指定資料夾中的所有檔案 directoryinfo thefolder new directoryinfo folderfullname 遍歷一層資料夾 foreach directoryinfo nextfolder in thefolder.getdirectories 遍歷多層資料夾 ...