python 複製指定資料夾下所有檔案

2021-10-19 17:27:52 字數 3701 閱讀 6772

get_all_file_by_type() :根據接收到的path 和type,獲得該path下所有以type型別結尾的檔案

get_all_file_by_string(): 根據接收到的path 和 list, 獲得該path下所有的,包含list 裡字串的檔案

copy_file_by_type(): 根據接收到的old_path,和type,呼叫get_all_file_by_type()方法。根據條件選擇不同的執行**

copy_file_by_string():同理,不過它呼叫的是get_all_file_by_string()方法

1、複製檔案的完整路徑

import os

import shutil

defget_all_file_by_type

(path,

type=(

)):# 獲得以type型別結尾的所有檔案,返回乙個list

filelist =

for a, b, c in os.walk(path)

:for name in c:

fname = os.path.join(a, name)

if fname.endswith(

type):

return filelist

defget_all_file_by_string

(path, string_list)

: filelist =

for a, b, c in os.walk(path)

:for name in c:

fname = os.path.join(a, name)

for string in string_list:

if string in fname:

# 如果只想要檔名符合條件,把fname換成name即可

break

return filelist

defcopy_file_by_type

(old_path, new_path,

type=(

'doc'

,'docx'

), requird_dir=

false):

try:

file_list = get_all_file_by_type(old_path,

type

=type

)# 獲得該路徑下所有的type型別檔案

ifnot os.path.exists(new_path)

:# 建立新的資料夾

os.makedirs(new_path)

ifnot requird_dir:

# 如果僅複製檔案

forfile

in file_list:

name =

file

.split(

"\\")[

-1]# 獲得檔案名字

new_paths = os.path.join(new_path, name)

# 與新路徑拼接,獲得完整的新路徑

shutil.copy(

file

, new_paths)

print

(new_paths +

"成功"

)if requird_dir:

forfile

in file_list:

name =

file

.split(

"\\")[

-1]# 獲得檔案名字

new_paths =

file

.replace(old_path, new_path)

# 將乙個完整路徑中,開始的路徑替換成新的路徑

dir= new_paths.split(name)[0

]# 獲得資料夾路徑

ifnot os.path.exists(

dir)

:# 建立新資料夾

os.makedirs(

dir)

shutil.copy(

file

, new_paths)

print

(new_paths +

"成功"

)except exception as e:

print

(e)def

copy_file_by_string

(old_path, new_path, string_list, requird_dir=

false):

try:

file_list = get_all_file_by_string(old_path, string_list=string_list)

# 與上述一樣,只不過這裡呼叫的是get_all_file_by_string方法

ifnot os.path.exists(new_path)

: os.makedirs(new_path)

ifnot requird_dir:

forfile

in file_list:

name =

file

.split(

"\\")[

-1] new_paths = os.path.join(new_path, name)

shutil.copy(

file

, new_paths)

print

(new_paths +

"成功"

)if requird_dir:

forfile

in file_list:

name =

file

.split(

"\\")[

-1] new_paths =

file

.replace(old_path, new_path)

print

(new_paths)

dir= new_paths.split(name)[0

]ifnot os.path.exists(

dir)

: os.makedirs(

dir)

shutil.copy(

file

, new_paths)

print

(new_paths +

"成功"

)except exception as e:

print

(e)if __name__ ==

'__main__'

: old_path = r"f:\aaaa"

new_path = r"f:\bbbb"

list=[

"面試"

,"筆試"

,"題庫"

,"題目"

] copy_file_by_string(old_path=old_path, new_path=new_path, string_list=

list

, requird_dir=

false

)# type = ('docx','doc',"pdf","md")

# copy_file_by_type(old_path=old_path, new_path=new_path, type=type, requird_dir=true)

Python列舉指定資料夾下的特定檔案

方案 1 利用 glob 模組 import glob import os dst path c ext name txt os.chdir dst path for file in glob.glob ext name pass 方案 2 利用 os.listdir import os dst p...

查詢指定資料夾下的檔案

include include using namespace std finddata t結構體 struct finddata t void main attrib為檔案屬性,由以下字元代表 fa rdonly 唯讀檔案 fa label 卷標號 fa hidden 隱藏檔案 fa direc ...

Python Python讀取資料夾下的所有檔案

os.listdir path 是得到在path路徑下所以檔案的名稱列表。open path 是開啟某個檔案。iter是python的迭代器。所以讀取某資料夾下的所有檔案如下 import os path d python34 news 資料夾目錄 files os.listdir path 得到資...