电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 批量重命名移動文件

瀏覽:59日期:2022-06-24 14:26:09

今天介紹的案例是如何利用Python來自動化移動、修改、重命名文件/夾,這樣的操作在日常辦公中經常會用到,若能掌握用Python實現將會大大提高效率!

所以我希望能夠通過這篇文章來讓大家了解:如何基于 os glob 和 shutil 對文件管理的綜合運用!

一、需求描述

為了讓本文介紹的案例更有通用型,我新建了一個文件夾 files1 存放著 1800+ 個文件,如下所示:

python 批量重命名移動文件

需要完成的內容如下

“將 1835 個文件移動到新文件夾 file2,并且重命名文件,名字開頭加上 序號 和 “終稿” 兩個字,如名字更改為 “1-終稿-xxxxx(原文件名)””

你心里可能想著:這是人做的事??? 但確實這是真實的需求,文件批量重命名非常常見,如果沒有一些技巧,那么只能耗費大量的時間和人力去做。這里的技巧,就是 Python

另外還有一個問題:要先移動再重命名還是先重命名再移動呢? 繼續往下看!

二、前置知識和數據準備2.1 生成大量隨機文件

真實的辦公場景并不會這樣的需求,畢竟誰想要無端給自己的電腦產生大量無用文件呢(也不要給別人的電腦亂用)

不得不提,生成隨機文件能夠幫助我們更好的測試自己 Python 文件管理的技能。如果你沒有合適的文件夾和文件夾供自己練習,那么為什么不自己寫個代碼產生呢?

當然,在這個過程中我們也會學習一些知識點,先看代碼:

import randomimport stringfor i in range(2000): random_str = ’’.join(random.sample(string.ascii_letters + string.digits, random.randint(1, 11))) file = open(r'C:xxxfile1' + random_str + '.txt', ’w+’) # 前面路徑是產生文件的目標文件夾 file.write(’’.join(random.sample(string.ascii_letters + string.digits, random.randint(1, 11)))) file.close()

通過 string 就可以獲得所有的字母和數字,利用 random.sample() 常規接受兩個參數,一個是抽樣的范圍,一個是抽樣的次數,默認是放回抽樣。這樣就可以在給定的字母數字范圍內隨機抽取 1-10 個,但是返回的結果注意是列表,需要再用 .join 方法完成字符串拼接

用隨機產生的名字生成文件后,再在其內部用類似的方法隨機寫入一些內容:

python 批量重命名移動文件

上面的寫法不夠優雅,因為需要配套使用 file.close() 釋放,更好的方法是直接利用上下文管理器 with 結構,減少出錯的幾率

import randomimport stringfor i in range(2000): random_str = ’’.join(random.sample(string.ascii_letters + string.digits, random.randint(1, 11))) with open(r'C:xxxfile1' + random_str + '.txt', ’w+’) as file: file.write(’’.join(random.sample(string.ascii_letters + string.digits, random.randint(1, 11))))

因為即使是隨機產生名字,但抽樣的范圍和次數不大決定了 2000 次抽樣會有一些抽簽組合成的名字完全一樣,后面形成的文件會覆蓋之前產生的文件,最終導致產生的文件沒有 2000 個。

2.2 重命名文件/文件夾

需要用到內置庫 os 的 os.rename() 方法

import osos.rename(’practice.txt’, ’practice_rename.txt’) # 重命名文件os.rename(’文件夾1’, ’文件夾2’) # 重命名文件夾

雖然需求中有重命名文件的需求,但實際上并不需要直接借助這個方法

2.3 移動文件/文件夾

需要用到內置庫 shutil 的 shutil.move 方法

import shutil shutil.move(r’.practice.txt’, r’.文件夾1/’) shutil.move(r’.practice.txt’, r’.文件夾1/new.txt’)

注意到上面后兩行代碼的區別嗎?前一行是將目標文件移動到目標文件夾里,而后一行,在將目標文件移動到目標文件夾里的同時,能夠對其進行重命名

也就是說,我們并不需要用 os.rename 先命名文件再用 shutil.move 將其移動的指定文件夾,而是可以用 shutil.move 一步到位。

2.4 遍歷獲取文件

采用基于 glob 庫的迭代框架:

import globpath = xxxfor file in glob.glob(f’{path}/**/*.xlsx’, recursive=True): pass

上面的代碼能夠獲取給定路徑內部所有文件夾下的 Excel 文件(.xlsx 格式), recursive 參數默認為 False,當為 True 時允許逐級遍歷

而本例需要獲取給定文件夾下的所有 .txt 文件,則更加簡單:

import globpath = xxxfor file in glob.glob(f’{path}/*.txt’): pass三、代碼實現

在上面一節我們已經把需求拆分為多個小塊并理清了思路,現在可以開始寫代碼了。首先導入需要的庫

import osimport shutilimport globpath = r'C:xxx' # 存放大量需更名移動文件的文件夾路徑的上一級路徑

上文提到,不需要利用 os.rename 那為什么要導入 os 庫呢?

一方面因為要通過這個庫產生新的文件夾。也可以手動完成,但交給代碼多了判斷也不容易出錯:

if not os.path.exists(path + r’file2’): os.mkdir(path + r’file2’)

另一方面下文還會用它獲取文件名,然后就可以移動更名一步到位,glob 迭代文件框架遍歷獲取文件絕對路徑:

count = 1 # 生成序號for file in glob.glob(f’{path}測試*.txt’): # 這里是文件絕對路徑,可以用字符串方法直接替換修改,但為了方便理解我還是用路徑拼接 filename = os.path.basename(file) shutil.move(file, path + r’file2’ + f’{count}-終稿-{filename}’) count += 1

python 批量重命名移動文件

以上就是python 批量重命名移動多個文件的詳細內容,更多關于python 批量重命名移動文件的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 南京欧陆电气股份有限公司-风力发电机官网 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 | 纯化水设备-EDI-制药-实验室-二级反渗透-高纯水|超纯水设备 | 翅片管散热器价格_钢制暖气片报价_钢制板式散热器厂家「河北冀春暖气片有限公司」 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 山东艾德实业有限公司| 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 宜兴市恺瑞德环保科技有限公司 | 磁力抛光机_磁力研磨机_磁力去毛刺机_精密五金零件抛光设备厂家-冠古科技 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | 逗网红-抖音网红-快手网红-各大平台网红物品导航 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | 湖南自考_湖南自学考试网 | 大行程影像测量仪-探针型影像测量仪-增强型影像测量仪|首丰百科 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | MOOG伺服阀维修,ATOS比例流量阀维修,伺服阀维修-上海纽顿液压设备有限公司 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 广州昊至泉水上乐园设备有限公司| 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 热工多功能信号校验仪-热电阻热电偶校验仿真仪-金湖虹润仪表 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | 防水接头-电缆防水接头-金属-电缆密封接头-不锈钢电缆接头 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 120kv/2mA直流高压发生器-60kv/2mA-30kva/50kv工频耐压试验装置-旭明电工 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦| 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 废旧物资回收公司_广州废旧设备回收_报废设备物资回收-益美工厂设备回收公司 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 桑茶-七彩贝壳桑叶茶 长寿茶 | 400电话_400电话申请_888元包年_400电话办理服务中心_400VIP网 |