Python脚本处理文件

循环读取文件夹

我们并不知道文件夹内的目录结构,然后我们需要用代码来读出来里面的目录结构然后再进行处理。

创建文件目录

我们创建了一个文件和子文件夹混合的,并且文件类型也是不定的,然后用代码进行读取。
在这里插入图片描述
在这里插入图片描述

读取文件夹

其中最主要的是代码循环读取文件夹。
在这里插入图片描述
我们可以看到代码读取了文件夹内所有的子文件夹和文件。代码如下:

import os


dirList = []
exist = []

def readfile(path):
    # print(path)
    filelist = os.listdir(path)
    for item in filelist:
        # print(item)
        itemPath = path +"\\"+ item
        # print(itemPath)
        if os.path.isdir(itemPath):
            #print(itemPath)
            readfile(itemPath)
            dirList.append(itemPath)
        else:
            if path in exist:
                continue
            else:             
                exist.append(itemPath)
                # print(item)
    
path = "D://桌面//test"
readfile(path)
print("文件夹为:")
print(dirList)
print("文件为:")
print(exist)

注:如果需要的话可以用split()方法进行path路径的截取,后面也会介绍。

修改文件

上一步的基础上,进行文件名的修改

修改文件名

我们可以定一下,修改文件名字为指定的名字,修改为文件名字加 _test ,现在我们来看代码。

import os


dirList = []
exist = []

def readfile(path):
    # path为根路径
    filelist = os.listdir(path)
    for item in filelist:
        # print(item)
        itemPath = path +"\\"+ item
        # print(itemPath)
        if os.path.isdir(itemPath):
            #print(itemPath)
            readfile(itemPath)
            dirList.append(itemPath)
        else:
            if path in exist:
                continue
            else:             
                exist.append(itemPath)
                # print(item)
                changeName(path,item.split('.')[0])

def changeName(path,name):
    filelist = os.listdir(path)  
    test = "_test" 
    for item in filelist:
        orifile = path + "\\" + item
        if os.path.isdir(orifile):
            continue
        else:
            newfile = path + "\\" + name + test +"."+ item.split('.')[1]
            os.rename(orifile,newfile)
    
path = "D://桌面//test"
readfile(path)
print("文件夹为:")
print(dirList)
print("文件为:")
print(exist)

我们可以看到文件已经改了,即使文件夹里面的文件也更改了。(此外还可以改文件类型,大概34行文件路径截取后面该为自己想改的类型即可)
在这里插入图片描述
这里代码都很简单,只不过有一点点逻辑性。主要就是一个递归函数。

文件生成

生成一个新的文件,并在里面写入内容

import os
import json

dirList = []
exist = []
file_list =[]

def readfile(path):
    # path为根路径
    filelist = os.listdir(path)
    for item in filelist:
        # print(item)
        itemPath = path +"\\"+ item
        # print(itemPath)
        if os.path.isdir(itemPath):
            #print(itemPath)
            readfile(itemPath)
            dirList.append(itemPath)
        else:
            if path in exist:
                continue
            else:             
                exist.append(itemPath)
                # print(item)
                changeName(path,item.split('.')[0])

def changeName(path,name):
    filelist = os.listdir(path)  
    test = "_test" 
    for item in filelist:
        orifile = path + "\\" + item
        if os.path.isdir(orifile):
            continue
        else:
            newfile = path + "\\" + name + test +"."+ item.split('.')[1]
            # 路径截取,以点进行分割出来两个元素,一个点前面(文件名字),一个点后面(文件类型)
            file_list.append(newfile)
            os.rename(orifile,newfile)
    
    
def createfile(path):
    # path:文件会生成在此路径下这里默认为开始给的路径
    file_paths = os.path.join(path, 'create.json')
    # create.json:create为文件名,后面是文件类型
    file_lists ={
    "file folder path" : dirList,
    "file path" :   exist 
    }
   
    file_create = open(file_paths, 'w')
    # 文件创建
    file_create.writelines(json.dumps(file_lists))
    # 写入内容,json.dumps:json反序列化
    file_create.close()
    # 资源关闭
path = "G://test"
readfile(path)
createfile(path)

上面比较重要地方的都写了注释。可以耐心看一下很容易理解的。
接下来看一下文件创建的结果。
在这里插入图片描述
初始路径给的G://test, 然后他就生成在此路径下。接下来我们看一下内容。
在这里插入图片描述
和预期的也是一致的。

#   w :  创建文件(w为写入的操作,当文件不存在时,则会创建文件;已创建文件,则内容会被覆盖)
#  w+ :  创建文件并读取文件
#  wb :  二进制形式创建文件(与 w 的功能相同,只不过 web 的写入类型为 byte )
# wb+ : 二进制形式创建或追加内容(如果文件存在不会覆盖原本的内容,而是以 byte 类型进行追加)
#   a : 在文件中追加内容,如果没有该文件则会创建文件
#  a+ :  读写模式追加(同样是追加内容,只不过赋予了读取的功能)
# ab+ : 二进制形式读写追加(可以追加并读取 byte 类型的模式)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小松很努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值