悉野小楼

导航

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("处理完成")

 

posted on 2023-10-13 11:13  悉野  阅读(35)  评论(0编辑  收藏  举报