python学习笔记3 文件操作 遍历目录, 列出文件名
import os def listDir(curPath, pixLen): list = [] # print("当前路径:" + curPath) files = os.listdir(curPath) for path in files: fullPath = os.path.join(curPath, path) if os.path.isfile(fullPath): # append是打元素加到尾部 list.append(fullPath[pixLen:]) else: #extend是把列表中所有元素加到另一个列表 list.extend(listDir(fullPath, pixLen)) return list #print(__file__) ''' __file__表示当前文件名的绝对路径 ''' defaultDir = os.path.dirname(__file__); #取文件对应的目录 dir = input("输入游戏路径:\n") if dir == "": dir = defaultDir print("使用当前路径:", defaultDir) allFiles = listDir(dir, len(dir)) for path in allFiles: #input("按键继续") print(path)
文件相关操作:
filename = "E:\\Python\\test.py" dirName = os.path.dirname(filename); #取文件对应的目录 e:\Python shortName = os.path.basename(filename) #文件名 test.py extension = os.path.splitext(filename)[-1] #扩展名.py splitext就是分出扩展名以前, 以及扩展名 #extension = filename.split(".")[-1]# 这样也可以拿扩展名, 如果文件没扩展名, 应该拿全文件名了 dirs = os.path.split(dirName) #E:\, Python split是根据系统目录分隔符, 分出最后一个与前面所有两块 os.rename(filename, filename + "2") #重命名 shutil中也有shutil.remove(file) 函数用于删除文件。
以文件夹命名文件, 并把文件从子目录中移动根目录:
import os import shutil #附加文本 def appendTxt(filePath, content): with open(filePath, "a") as file: file.write(content) #写入文本 def writeTxt(filePath, content): file = open(filePath, "w") file.write(content) file.close() #列出所有文件, 不含文件夹 def listDir(curPath, pixLen): list = [] # print("当前路径:" + curPath) files = os.listdir(curPath) for path in files: fullPath = os.path.join(curPath, path) if os.path.isfile(fullPath): # append是打元素加到尾部 list.append(fullPath[pixLen:]) else: #extend是把列表中所有元素加到另一个列表 list.extend(listDir(fullPath, pixLen)) return list #遍历文件夹改名, 如果文件夹名字长度大于文件名字长度, 使用文件夹名字替换文件名 def renameWithFolder(folder): files = listDir(folder, 0) result = "" for file in files : fullDirName = os.path.dirname(file) #取文件对应的目录 目录全名 dirs = os.path.split(fullDirName) shortDirName = dirs[-1] #文件夹名字 shortName = os.path.basename(file) #文件名 短文件名 带扩展名 如test.txt infos = os.path.splitext(shortName) #splitext就是分出扩展名以前, 以及扩展名 shortName = infos[0] extension = infos[-1] #扩展名, 类似.txt if len(shortDirName) > len(shortName): newName = shortDirName + extension #print(shortName + "=>" + newName) #python字符串+=会与=相同, 不能连多行字符串 result = shortName + "=>" + newName + "\n" + result newFullName = os.path.join(fullDirName, newName) #改名 os.rename(file, newFullName) #print(result) writeTxt("rename_result.txt", result) #移动所有子目录中的文件到根目录 def moveFile(rootFolder): files = listDir(rootFolder, 0) result = "" for file in files : shortName = os.path.basename(file) shortName = shortName.replace("名字替换1", "").replace("名字替换2", "") print(shortName) newFullPath = os.path.join(rootFolder, shortName) result = file + "=>" + newFullPath + "\n" + result shutil.move(file, newFullPath) writeTxt("movefile_result.txt", result) defaultDir = os.path.dirname(__file__); #取文件对应的目录 localDir = input("输入路径:\n") if localDir == "": localDir = defaultDir print("使用当前路径:", defaultDir) #改名 renameWithFolder(localDir) #移动文件 moveFile(localDir) print("处理完成")