python目錄拷貝
Ⅰ 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剪切
Ⅱ Python復制文件命令合集
python的shutil模塊提供了便捷的復制文件命令
shutil.(srcfile,dstfile) #拷貝文件,目標文件必須存在,否則就會報錯
shutil.file(srcfile,dstfile) #拷貝文件,目標 文件無需巧蘆凳存在
shutil.tree(srcdir,dstdir) #srcdir為源目錄,dstdir為目標目錄,復制時,如果dstdir已經存在時,會報FileExistsError錯誤,提示「當文件已存在時,無法創建該文件」
shutil.mode(src, dst) # 僅拷貝許可權。內孝旅容、組、用戶均不變,目標文件嘩昌必須存在
Ⅲ python 復制文件
報錯多半是這句targetDir = targetDir+'/'+os.path.split(sourceDir)[1]
你這句把本來的targetDir覆蓋了,導致後面的文件的目標文件夾被修改
發個我寫的吧,參考下吧
defFile(sourceDir,targetDir):
ifnotos.path.exists(targetDir):
os.makedirs(targetDir)
forfilenameinos.listdir(sourceDir):
path=os.path.join(sourceDir,filename)
ifos.path.isdir(path):
targetSubDir=os.path.join(targetDir,filename)
File(path,targetSubDir)
else:
targetPath=os.path.join(targetDir,filename)
open(targetPath,'wb').write(open(path,'rb').read())
Ⅳ 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自定義函數如何復制文件
from shutil import
(源文件路徑, 目標文件或目錄路徑)
Ⅵ 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如何將指定文件夾(包括裡面的內容)到指定目錄(已存在)
使用這個方法
importshutil,errno
defanything(src,dst):
try:
shutil.tree(src,dst)
exceptOSErrorasexc:#python>2.5
ifexc.errno==errno.ENOTDIR:
shutil.(src,dst)
else:raise
Ⅷ python--目錄操作
一、os.getcwd()
獲取當前工作目錄,即當前Python腳本工作的目錄路徑。
二、os. chdir(path)
改變當前腳本工作目錄;相當於shell下的cd命令。
三、os.pardir
返回當前目錄的父目錄('..')
四、獲取當前使用的操作系統類型(其中 『nt』 是 windows,』posix』 是linux 或者 unix)。
五、os.mkdir(path [, mode=0777])
生成單級目錄;相當於linux中的mkdir dirname。參數mode表示生成的目錄的許可權,默認是超級許可權,也就是0777。如果重復創建,會報錯
六、os.makedirs(path [, mode=0777])
可生成多層遞歸目錄,父目錄如果不存在,遞歸生成。參數mode表示生成的目錄的許可權,默認是超級許可權,也就是0777。
七、os.removedirs(path)
若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,依次類推。
八、os.rmdir(path)
刪除單級空目錄,若目錄不為空則無法刪除,會報錯;相當Linux中的rmdir dirname。
九、os.listdir(path)
列出指定目錄下的所有文件和子目錄,包括隱藏文件或目錄,並以列表形式返回。
十、os.remove(filePath)
刪除一個指定的文件,參數filePath表示文件所在的路徑。
注意:該方法只能刪除文件,不能刪除目錄。
十一、os.rename(oldname, newname)
重命名文件/目錄。
十二、os.access(path, mode)
輸出文件許可權模式。
十三、os.chmod(path, mode)
修改文件的許可權。
十四、os.walk(top, topdown=True, onerror=None, followlinks=False)
➢top:表示需要遍歷的目錄樹的路徑。
➢topdown的默認值是「True」,表示首先返回目錄樹下的文件,然後遍歷目錄樹下的子目錄。值設為False時,則表示先遍歷目錄樹下的子目錄,返回子目錄下的文件,最後返回根目錄下的文件。
➢onerror的默認值是「None」,表示忽略文件遍歷時產生的錯誤。如果不為空,則提供一個自定義函數提示錯誤信息後繼續遍歷或拋出異常中止遍歷。
➢該函數返回一個列表,列表中的每一個元素都是一個元組,該元組有3個元素,分別表示每次遍歷的路徑名,目錄列表和文件列表。
➢默認情況下,os.walk 不會遍歷軟鏈接指向的子目錄,若有需要請將followlinks設定為true
十五、os.path.split(path)
將path分割成目錄和文件名(事實上,如果你完全使用目錄,它也會將最後一個目錄作為文件名而分離,同時它不會判斷文件或目錄是否存在),並存於元組中返回。
十六、os.path.exists(path)
判斷path是否存在,如果存在返回True,否則返回False。
十七、os.path.isfile(path)
判斷path是否是文件,如果是返回True,否則返回False。
十八、os.path.isdir(path)
判斷path是否是目錄,如果是目錄返回True,否則返回False。
十九、os.path.getsize(name)
獲得文件大小,如果name是目錄返回結果是0L或者4096L;如果name代表的目錄或文件不存在,則會報WindowsError異常。
二十、os.path.join(a, *p)
連接兩個或更多的路徑名,中間以「\」分隔,如果所給的參數中都是絕對路徑名,那先給的絕對路徑將會被丟棄。
二十一、os.path.getatime(filename)
返迴文件的最後訪問時間,返回的是時間戳。
二十二、os.path.getctime(filename)
以時間戳的形式返迴文件或目錄的創建時間,在Unix系統上是文件最近更改的時間,在Windows上是文件或目錄的創建時間。
1.基礎題:
檢驗給出的路徑是否是一個文件:os.path.isfile("D:\\test.txt")
檢驗給出的路徑是否是一個目錄:os.path.isdir("D:\\test.txt")
判斷是否是絕對路徑:os.path.isabs("D:\\test.txt")
檢驗給出的路徑是否真地存在:
2.返回一個路徑的目錄名和文件名 :os.listdir("D:\\")
3.分離文件名與擴展名 :os.path.splitext("D:\\test.txt")
4.找出某個目錄下所有的文件,並在每個文件中寫入「gloryroad」 :
>>> for files in os.walk("D:\\test"):
... print(files)
...
('D:\\test', [], ['a.txt', 'b.txt', 'test.txt', 'test1.txt'])
>>> with open("D:\\test\\a.txt","w+") as f:
... f.write("gloryroad")
5.如果某個目錄下文件名包含txt後綴名,則把文件後面追加寫一行「被我找到了!」
6. 命題練習:
1) 一個目錄下只有文件(自己構造),拷貝幾個文件(手工完成)
2 )用listdir函數獲取所有文件,如果文件的創建時間是今天,那麼就在文件裡面寫上文件的路徑、文件名和文件擴展名
3) 如果不是今天創建(獲取文件的創建時間,並轉化為時間格式,判斷是否今天),請刪除
4 )計算一下這個程序的執行耗時
7.刪除某個目錄下的全部文件
8.統計某個目錄下文件數和目錄個數
9.使用程序建立一個多級的目錄,在每個目錄下,新建一個和目錄名字一樣的txt文件
10. 查找某個目錄下是否存在某個文件名
11. 用系統命令拷貝文件
12.輸入源文件所在路徑和目標目錄路徑,然後實現文件拷貝功能
13.遍歷某個目錄下的所有圖片,並在圖片名稱後面增加
14、遍歷指定目錄下的所有文件,找出其中佔用空間最大的前3個文件
15、過濾py源碼中的#注釋,另存為文件result.py,並執行result.py,斷言是否執行成功
16、文件訪問,提示輸入數字 N 和文件 F, 然後顯示文件 F 的前 N 行.
17、從命令行接受1個路徑如:c:\a\b\c\1.py, 實現1個函數創建目錄a\b\c,創建文件1.py,實現1個函數刪除已創建的目錄及文件
18、有一個ip.txt,裡面每行是一個ip,實現一個函數,ping 每個ip的結果,把結果記錄存到ping.txt中,格式為ip:0或ip:1 ,0代表ping成功,1代表ping失敗
19、實現DOS命令執行功能,接受輸入命令並執行,然後把執行結果和返回碼列印到屏幕
20、文件訪問
訪問一存在多行的文件,實現每隔一秒逐行顯示文本內容的程序,每次顯示文本文件的 5行, 暫停並向用戶提示「輸入任意字元繼續」,按回車鍵後繼續執行,直到文件末尾。
顯示文件的格式為:[當前時間] 一行內容,比如:[2016-07-08 22:21:51] 999370this is test
Ⅸ 用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把文件夾下的所有文件包括文件夾裡面的文件都拷貝到同一個目錄下
importos
importshutil
defwenjian(path):
ifos.path.isfile(path):
shutil.(path,'c:\new_dir')
ifos.path.isdir(path):
lists=os.listdir(path)
foriinlists:
wenjian(i)
foriinos.walk('c:\1'):
wenjian(i)
建議你把檢索到的文件都放到一個新的文件夾里,要不然系統在同一個文件夾里不停的讀取和寫入可能會陷入死循環以至出錯。