使用Python3怎么移動指定文件?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)為客戶提供專業(yè)的網(wǎng)站設計制作、成都網(wǎng)站設計、程序、域名、空間一條龍服務,提供基于WEB的系統(tǒng)開發(fā). 服務項目涵蓋了網(wǎng)頁設計、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、成都做手機網(wǎng)站等網(wǎng)站方面業(yè)務。需求分解:
從excel中提取代號index和姓名信息name
以index_name格式批量建立文件夾namefolder
分別遍歷四個文件夾及其子文件夾,將其中“文件名filename中包含姓名name”的文檔移動到該人對應的新建的文件夾namefolder中
excel內(nèi)容:
處理前:
處理后:
功能實現(xiàn)比較容易,權(quán)當記錄。
環(huán)境:Python3.6+macOS10.12.5
代碼
# -*- coding: utf-8 -*- import os import shutil import xlrd import string ### 創(chuàng)建多層目錄 def mkdirs(path): # 去除首位空格 path = path.strip() # 去除尾部 \ 符號 path = path.rstrip("\\") # 判斷路徑是否存在 # 存在 True # 不存在 False isExists = os.path.exists(path) # 判斷結(jié)果 if not isExists: # 創(chuàng)建目錄操作函數(shù) os.makedirs(path) # 如果不存在則創(chuàng)建目錄 print(path + ' 創(chuàng)建成功') return True else: # 如果目錄存在則不創(chuàng)建,并提示目錄已存在 print(path + ' 目錄已存在') return False def search_file(path, filename, newpath): queue = [] queue.append(path); while len(queue) > 0: tmp = queue.pop(0) if (os.path.isdir(tmp)):#如果該路徑是文件夾 for item in os.listdir(tmp):#遍歷該路徑中文件和文件夾 queue.append(os.path.join(tmp, item))#將所得路徑加入隊列queue elif (os.path.isfile(tmp)):#如果該路徑是文件 name = os.path.basename(tmp) # 獲取文件名 dirname = os.path.dirname(tmp) # 獲取文件目錄 full_path = os.path.join(dirname, name) # 將文件名與文件目錄連接起來,形成完整路徑 des_path = newpath+'/'+path+'_'+name #目標路徑,將該文件夾信息添加進最后的文件名中 if filename in name:#匹配符合條件的文件,也可用if(name.find(filename)!=-1): shutil.move(full_path, des_path)#移動文件到目標路徑(移動+重命名) if __name__ == '__main__': #打開excel文件 data=xlrd.open_workbook('名單.xlsx') #獲取第一張工作表(通過索引的方式) table=data.sheet_by_index(0) #datalist用來存放數(shù)據(jù) datalist_UNIQID=[] datalist_NAME=[] #將table中第一行的數(shù)據(jù)讀取并添加到data_list中 datalist_UNIQID.extend(table.col_values(0)) datalist_NAME.extend(table.col_values(2)) #foldname = [a+'_'+b for a, b in zip(datalist_UNIQID,datalist_NAME)] dir_tjbg='zzz報告' dir_fsgz='xxx證書' dir_hbpx='yyy證書' dir_ykfs='xyz證書' #打印出第一行的全部數(shù)據(jù) for index, name in zip(datalist_UNIQID, datalist_NAME): foldername=index+'_'+name.strip() #print(foldername) mkdirs(foldername) search_file(dir_tjbg,name.strip(),foldername) search_file(dir_fsgz,name.strip(),foldername) search_file(dir_hbpx,name.strip(),foldername) search_file(dir_ykfs,name.strip(),foldername)
備忘
1. 同步遍歷兩個list
l1 = [2,2,2,2] l2 = [3,3,3,3] prod = [a*b for a, b in zip(l1,l2)] print prod # [6, 6, 6, 6] add = [a+b for a, b in zip(l1,l2)] print add # [5, 5, 5, 5]
2. 文件夾操作
import os import shutil os.getcwd() # 獲取當前工作目錄,非腳本目錄 os.listdir() # 返回指定目錄下的所有文件和目錄,非遞歸 os.remove() # 刪除文件 os.removedirs() #刪除目錄 os.path.isfile() # 檢驗給出的路徑是否是一個文件 os.path.isdir() # 檢驗給出的路徑是否是一個目錄 os.path.isabs() # 判斷是否是絕對路徑 os.path.exists() # 檢驗給出的路徑是否真實存在 os.path.split() # 返回一個路徑的目錄名和文件名 os.path.splitext() # 分離文件擴展名 os.path.dirname() # 獲取文件路徑名 os.path.basename() # 獲取一個絕對路徑下的文件名 os.system() # 運行shell命令 os.rename(old,new) # 重命名文件或目錄 os.makedirs(r"c:\python\test") # 創(chuàng)建多級目錄 os.mkdir("test") # 創(chuàng)建單個目錄 os.exit() # 終止當前進程 os.path.getsize(filename) # 獲取文件大小 os.mknod("test.txt") # 創(chuàng)建空文件 shutil.copyfile("oldfile","newfile") # oldfile和newfile都只能是文件 shutil.copytree("olddir","newdir") # olddir和newdir都只能是目錄,且newdir必須不存在 shutil.move("oldpos","newpos") # 移動文件或目錄 shutil.rmtree("dir") # 刪除目錄,與os.removedirs()相同 os.path.join(“home”, "me", "mywork") # 路徑連接
關(guān)于使用Python3怎么移動指定文件問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道了解更多相關(guān)知識。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。