Python遍歷目錄更換檔名和目錄名

2021-09-24 10:21:41 字數 3280 閱讀 4811

# encoding: utf-8

# author: walker

# date: 2014-03-07

# summary: 深度遍歷指定目錄,並將子目錄和檔名改為小寫

# 注意,此程式只針對windows,windows下檔案(夾)名不區分大小寫

import os

import time

starttime = time.time()

# 需要處理目錄的絕對路徑

fileroot = r'd:\test'

def main():

# 先修改檔名

for parent, dirnames, filenames in os.walk(fileroot):

for filename in filenames:

srcfile = os.path.join(parent, filename)

dstfile = os.path.join(parent, filename.lower())

if srcfile == dstfile:   # 如果檔名本身就是全小寫

continue

print('%s -> %s' % (srcfile, dstfile))

os.rename(srcfile, dstfile)

# 後修改目錄名,這裡注意topdown引數。

# topdown決定遍歷的順序,

# 如果topdown為true,則先列舉top下的目錄,然後是目錄的目錄,依次類推;

# 反之,則先遞迴列舉出最深層的子目錄,然後是其兄弟目錄,然後父目錄。

# 我們需要先修改深層的子目錄

for parent, dirnames, filenames in os.walk(fileroot, topdown=false):

for dirname in dirnames:

srcdir = os.path.join(parent, dirname)

dstdir = os.path.join(parent, dirname.lower())

if srcdir == dstdir:  # 如果資料夾名本身就是全小寫

continue

print('%s -> %s' % (srcdir, dstdir))

os.rename(srcdir, dstdir)

if __name__ == '__main__':

main()

print('time total: %.2fs' % (time.time() - starttime))

print('current time: %s' % time.strftime('%y-%m-%d %h:%m:%s', time.localtime(time.time())))

# encoding: utf-8

# author: walker

# date: 2018-09-12

# summary: 深度遍歷指定目錄,並將子目錄和檔名改為小寫

# 如果目錄或檔名衝突,直接覆蓋

# 注意,此程式只針對 linux 設計,其他作業系統是否適用未知

import os

import time

import shutil

starttime = time.time()

# 需要處理目錄的絕對路徑

fileroot = r'/home/walker/test'

def main():

# 先修改檔名

for parent, dirnames, filenames in os.walk(fileroot):

for filename in filenames:

srcfile = os.path.join(parent, filename)

dstfile = os.path.join(parent, filename.lower())

if srcfile == dstfile:   # 如果檔名本身就是全小寫

continue

print('%s -> %s' % (srcfile, dstfile))

shutil.copyfile(srcfile, dstfile)   # 目標檔案會被覆蓋

# 後修改目錄名,這裡注意topdown引數。

# topdown決定遍歷的順序,

# 如果topdown為true,則先列舉top下的目錄,然後是目錄的目錄,依次類推;

# 反之,則先遞迴列舉出最深層的子目錄,然後是其兄弟目錄,然後父目錄。

# 我們需要先修改深層的子目錄

for parent, dirnames, filenames in os.walk(fileroot, topdown=false):

for dirname in dirnames:

srcdir = os.path.join(parent, dirname)

dstdir = os.path.join(parent, dirname.lower())

if srcdir == dstdir:  # 如果資料夾名本身就是全小寫

continue

print('%s -> %s' % (srcdir, dstdir))

if not os.path.exists(dstdir):  # 目標目錄不存在,直接改名

os.rename(srcdir, dstdir)

else:

# 目標目錄不存在,先拷貝建立硬鏈結,再刪除原始檔

# -f, --force

# -r, --recursive

# -l, --link, hard link files instead of copying

cmd = r'cp -frl %s/* %s' % (srcdir, dstdir)

print('cmd: %s' % cmd)

os.system(cmd)

cmd = r'rm -rf %s' % srcdir

print('cmd: %s' % cmd)

os.system(cmd)

if __name__ == '__main__':

main()

print('time total: %.2fs' % (time.time() - starttime))

print('current time: %s' % time.strftime('%y-%m-%d %h:%m:%s', time.localtime(time.time())))

python 批量替換檔名

你要是這樣學習看到這種噁心不,需求來了,批量替換檔名 movie name os.listdir h 妙味課堂 獲取所有的檔名列表 去掉node ts koa vue 程式設計開發 2018最新node ts koa vue 全棧開發 前後端 完結 0,1項還有最後一項跟這個無關 moview na...

Python 遍歷乙個目錄,輸出所有的檔名

import os defget log path dict log path home logs for root,dirs,files in os.walk log path log path dict dict for dir name in dirs dir path os.path.joi...

python批量替換檔名中的共同字元

lesson 1 2 單詞解讀.mp4 1 2 單詞解讀.mp4 如下 coding utf 8 import os 獲得資料夾下檔名列表 path r g baidunetdiskdownload 第1冊 path unicode path,utf8 file list os.listdir pa...