python復制目錄
『壹』 python怎樣實現 先找到文件夾下的所有文件夾,再把這些文件夾下的文件復制到新的文件夾里
#!/usr/bin/envpython
#-*-coding:utf-8-*-
importos
importshutil
importlogging
importdatetime
logging.basicConfig(level=logging.INFO,
format='%(asctime)s%(filename)s[line:%(lineno)d]%(levelname)s%(message)s',
datefmt='%a,%d%b%Y%H:%M:%S',
filename='D:Scriptsmove_file.log',
filemode='a+')
defupload_file(src_path,dst_path):
#目標目錄是否存在,不存在則創建
ifnotos.path.exists(os.path.dirname(dst_path)):
os.makedirs(os.path.dirname(dst_path))
#本地文件是否存在,存在則移動到目標目錄下
ifos.path.exists(src_path):
shutil.move(src_path,dst_path)
defmain(path):
count=0
forroot,dirs,filesinos.walk(path):
forfinfiles:
count+=1
local_file_path=os.path.join(root,f)
upload_file(local_file_path,local_file_path.replace("xxx","zzz"))
logging.info(str(datetime.datetime.now())+":"+str(count))
if__name__=='__main__':
path=r"D:xxx"
try:
main(path)
exceptExceptionase:
logging.error(e)
剛好剛寫完一個。
『貳』 python 實現一級目錄下的所有文件與文件夾到指定目錄
'''
python3 實現
將a目錄下所有文件和文件夾到b目錄
'''
import os, shutil
#src 原始目錄, des 目標目錄
def sourcecpy(src, des):
src = os.path.normpath(src)
des = os.path.normpath(des)
if not os.path.exists(src) or not os.path.exists(src):
print("文件路徑不存在")
sys.exit(1)
#獲得原始目錄中所有的文件,並拼接每個文件的絕對路徑
os.chdir(src)
src_file = [os.path.join(src, file) for file in os.listdir()]
for source in src_file:
#若是文件
if os.path.isfile(source):
shutil.(source, des) #第一個參數是文件,第二個參數目錄
#若是目錄
if os.path.isdir(source):
p, src_name = os.path.split(source)
des = os.path.join(des, src_name)
shutil.tree(source, des) #第一個參數是目錄,第二個參數也是目錄
『叄』 python中怎樣將文件拷貝到指定的目錄下
使用了os和shutil兩個模塊,os.listdir用於讀取目標目錄中的文件名稱,star文件夾中存儲了我手動篩選出來的DNG格式圖片,jpg文件夾中存儲了所有的jpg格式圖片,於是在獲取到所有DNG格式圖片後使用flag數組標記一下
然後循環遍歷targetnames數組尋找對應名稱的jpg文件,找到的話就使用shutil.file復制到指定文件夾,然後就大功告成了!
『肆』 python直接讀txt(或者excel)裡面的文件名,然後找到那個目錄里,把他們復制出來到新的文件,求代碼
1 安裝xlrd模塊
pipinstallxlrd
2 讀取Excel
#-*-coding:utf-8-*-
importxlrd
importos,shutil
defopen_excel(file='file.xls'):
try:
data=xlrd.open_workbook(file)
returndata
exceptException,e:
printstr(e)
defmyfile(srcfile,dstfile):
ifnotos.path.isfile(srcfile):
print"%snotexist!"%(srcfile)
else:
fpath,fname=os.path.split(dstfile)#分離文件名和路徑
ifnotos.path.exists(fpath):
os.makedirs(fpath)#創建路徑
shutil.file(srcfile,dstfile)#復制文件
print"%s->%s"%(srcfile,dstfile)
dst='D:\temp\'
myfile(srcfile,dstfile)
file_paths=data
forpinfile_paths:
srcfile=p
dstfile=dst+p.splt('/')[-1]
myfile(srcfile,dstfile)
『伍』 python中怎樣將文件拷貝到指定的目錄下
代碼:
import os
import shutil
from shutil import Error
from shutil import stat
from shutil import 2
src = "" #需要復制的文件目錄
dst = "" #目標目錄
def jiecptree(src, dst, symlinks=False, ignore=None): #聲明函數 ree( 要復制的目錄,目標目錄,復制符號連接內容到新目錄,沒有要忽略文件)
names = os.listdir(src) #獲得要復制目錄的文件名列表,賦給變數 names
if ignore is not None: #如果 ignore 不是None值
ignored_names = ignore(src, names) # src目錄中要忽略文件的名字賦給 ignored_names
else: # 否則
ignored_names = set() #ignore_name 被 不重復空元素集 賦值
if os.path.isdir(dst):
pass
else:
os.makedirs(dst)
# print"dstfirst:"+dst
errors = [] #聲明 errors列
for name in names: #將names里的元素循環復制給name
if name in ignored_names: #如果name在要求被忽略的列里出現
continue #繼續for循環(跳回for,從新循環下個元素)
srcname = os.path.join(src, name) #將路徑名(src)添加到文名(name)之前然後賦值給 srcname
dstname = os.path.join(dst, name) #將路徑名(dst)添加到文名(name)之前然後賦值給 dstcname
from shutil import Error
# print "name:"+name
# print "src:"+src
# print "dst:"+dst
try: #嘗試
if os.path.islink(srcname):
continue
elif os.path.isdir(srcname): #如果srcname路徑是存在
jiecptree(srcname, dstname, symlinks, ignore)
elif os.path.isdir(dstname):
os.remove(dstname)
2(srcname, dstname)
else: # 否則
2(srcname, dstname) # 復制srcname到dstname
# print "srcname:"+srcname
# print "dstname:"+dstname
# XXX What about devices, sockets etc.? #怎樣裝置
except (IOError, os.error), why: #除(IOError[與文件有關的異常],操作系統異常)外,返回原因
errors.append((srcname, dstname, str(why))) # 向errors列里添加,(要復制的目錄,目標目錄,錯誤原因)
# catch the Error from the recursive jiecptree so that we can 從遞歸復制中捕捉這個錯誤,以便於我們能繼續復制其他文件
# continue with other files
except Error, err: #除錯誤外,返回錯誤:
errors.extend(err.args[0]) #擴展 errors 列,添加(err.args[0] 元素)
try: #嘗試
stat(src, dst) # 從src復制許可權位,上次訪問時間,最後修改時間 到 dst,
except WindowsError: # 除 Windows錯誤 外:
# can't file access times on Windows 在Windows上無法復制文件訪問時間
pass # 通過(不作任何處理)
except OSError, why: # 除 操作系統錯誤 外,返回原因:
errors.extend((src, dst, str(why))) #擴展 errors 列,添加(要復制的目錄,目標目錄,錯誤原因)
if errors: # 如果錯誤
raise Error(errors) # 提示錯誤
更多相關內容可參考資料http://www.viiboo.cn
『陸』 python 中如何實現對文件的復制、粘貼
file類中沒有提供專門的文件復制函數,因此只能通過使用文件的讀寫函數來實現文件的復制。這里僅僅給出範例:
src = file("myfile.txt", "w+")
temp = ["hello world! \n"]
src.writelines(temp)
src.close()
src = file("myfile.txt", "r+")
des = file("myfile2.txt", "w+")
des.writelines(src.read())
src.close()
des.close()
shutil模塊是另一個文件,目錄的管理介面,提供了一些用於復制文件,目錄的函數。file()函數可以實現文件的拷貝,聲明如下:
file(src, des)
文件的剪切可以使用move()函數模擬,聲明如下:
move(src,des)
功能:移動一個文件或者目錄到指定的位置,並且可以根據參數des重命名移動後的文件。
『柒』 用python把文件夾下的所有文件包括文件夾裡面的文件都拷貝到同一個目錄下
defchange(path,path1):
forfinos.listdir(path):
ifos.path.isfile(path+os.path.sep+f):
a,b=os.path.splitext(f)
ifb!='.py':
shutil.(path+os.sep+f,path1)
elifos.path.isdir(path+os.path.sep+f):
change(path+os.sep+f,path1)
if__name__=='__main__':
path='D:\workspace\python'
path1='D:\workspace\python\filepath'
change(path,path1)
你好,我把change稍微改了一下,看看行不
『捌』 python 如何復制整個文件夾到另一個目錄下連文件夾也要復制過去
在 liunx下:
>>>importos
>>>os.system("cp-rf/folder/home/user/folder")
『玖』 python中目錄,如何將父目錄、子目錄及文件全部出,上下級關系不變
請問你的問題解決了嗎?
如果沒有的話,請追問。
用的是shutil模塊!!
『拾』 python 怎麼將輸入目錄內的文件拷貝至另一個目錄的同名文件夾
這是最近寫的一個類似代碼,你拿去改改
import shutil
import os
import logging
import sys
logger = logging.getLogger(__name__)
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
def cp_or_mv2(src_file, des_dir, is_):
print(src_file, des_dir)
if os.path.isfile(src_file):
logger.info(f'from file {src_file}')
if is_:
shutil.2(src_file, des_dir)
logger.info(f' to {des_dir}')
else:
des_file = os.path.join(des_dir, src_file)
shutil.move(src_file, des_file)
logger.info(f'move to {des_file}')
else:
logger.info(f'from dir {src_file}')
des_dir_level1 = os.path.join(des_dir, src_file)
shutil.tree(src_file, des_dir_level1, dirs_exist_ok=True)
logger.info(f'to {des_dir_level1}')
if not is_:
shutil.rmtree(src_file)
logger.info(f'deleted {src_file}')
def process_files_in_txt(txt_file, src_dir, des_dir, is_=True):
os.chdir(src_dir)
with open(txt_file, 'r', encoding='utf8', errors='ignore') as f:
for line in f.readlines():
src_file = line.strip()
# logger.info(src_file)
if os.path.exists(src_file):
cp_or_mv2(src_file, des_dir, is_)
else:
logger.warning(f'{src_file} missing!')
if __name__ == '__main__':
process_files_in_txt(r"D:\D\需要拷貝.txt", # 哪些文件(夾)
r"D:\D\Desktop", # 從哪個文件夾
r"D:\D\新建文件夾", # 到哪個文件夾
is_=False) # True復制,False剪切