本节内容

1、创建文件夹函数(不存在则创建,存在则跳过)
2、删除当前文件夹下的空文件夹
3、删除该文件夹下的所有文件
4、判断图片或文件是否下载成功
5、将a文件夹的所有文件移动到b文件夹中
6、将该目录下的文件根据后缀名,重命名
7、根据后缀名移动文件到新的目录下

一、创建文件夹函数(不存在则创建,存在则跳过)

import os
from pathlib import Path

# 判断文件夹是否存在,不存在并新建
def create_file(file_path):
    if Path(file_path).is_dir():  # 判断文件夹路径是否已经存在
        print('该文件夹已经存在了')
        pass
    else:
        os.mkdir(file_path)

二、删除当前文件夹下的空文件夹

# 删除当前文件夹下的空文件夹
import os


def del_emp_dir(path):
    """
    :param path: 文件夹路径
    :return:
    """
    for (root, dirs, files) in os.walk(path):
        for item in dirs:
            dir = os.path.join(root, item)
            try:
                os.rmdir(dir)  #os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。
                # print(dir)
            except Exception as e:
                pass
                # print('Exception',e)

三、删除该文件夹下的所有文件

import os

# 删除该文件夹下的所有文件
def del_file(path):
    ls = os.listdir(path)
    for i in ls:
        c_path = os.path.join(path, i)
        if os.path.isdir(c_path):
            del_file(c_path)
        else:
            os.remove(c_path)

四、判断图片或文件是否下载成功

import os
from time import sleep


# 判断文件或者图片,下载成功,根据文件夹大小不在变化确定
def success_downloading(path):
    # 读取该目录下文件夹的大小
    def getdirsize(path):  # 文件目录
        size = 0
        for root, dirs, files in os.walk(path):
            size += sum([os.path.getsize(os.path.join(root, name)) for name in files])
        return size

    # 判断文件夹大小,确认下载成功

    def get_file_size(path):
        try:
            size2 = getdirsize(path)
            return size2
        except:
            return get_file_size(path)

    size1 = get_file_size(path)
    sleep(0.5)
    size2 = get_file_size(path)
    ci_shu = 0
    while ci_shu < 3:
        while size1 < size2:
            size1 = get_file_size(path)
            sleep(0.5)
            size2 = get_file_size(path)
        ci_shu += 1

五、将a文件的所有文件移动到b文件夹中

# 将旧文件夹下所有文件到新文件夹
import os
import shutil


def filepath_to_new(old_file, new_file):
    """
    :param old_file: 旧路径
    :param new_file: 新路径
    :return:
    """
    num = 0
    try:
        num += 1
        for root, subdirs, files in os.walk(old_file):  # 路径、 、所有的文件名
            for file in files:
                path = os.path.join(root, file)
                shutil.move(path, os.path.join(new_file, os.path.relpath(path, old_file)))
        return 0
    except:
        if num == 2:
            return 1
        filepath_to_new(old_file, new_file)

六、将该目录下的文件根据后缀名,重命名

# 根据后缀名,重命名
import os
import shutil


def rename(path, filename):  # 文件目录,文件名(带后缀)
    filelist = os.listdir(path)
    for item in filelist:
        if item.endswith('.crdownload'):
            src = os.path.join(os.path.abspath(path), item)
            dst = os.path.join(os.path.abspath(path), filename)  # exp_filename或者con_filename需要带后缀名
            try:
                os.rename(src, dst)
            except:
                continue

七、根据后缀名移动文件 到新的目录下

def mymovefile(srcfile,dstfile):
    """
    :param srcfile: 待移动的文件路径
    :param dstfile: 新存放的文件路径
    :return:
    """
    if not os.path.isfile(srcfile):
        print("%s not exist!"%(srcfile))
    else:
        fpath,fname=os.path.split(dstfile)    #分离文件名和路径
        if not os.path.exists(fpath):
            os.makedirs(fpath)                #创建路径
        shutil.move(srcfile,dstfile)          #移动文件
        print("move %s -> %s"%( srcfile,dstfile))


def remove_suffix_file2new_path(old_path, new_path, suffix):
    '''
    :param old_path: 待移动的文件路径
    :param new_path: 移动至的文件路径
    :param suffix: 移动的文件后缀名,str
    :return:
    '''
    filelist = os.listdir(old_path)
    for srcfile in filelist:
        if srcfile.endswith(suffix):
            mymovefile(srcfile, new_path)



old_path = os.getcwd()
new_path = os.path.join(old_path, "old_file")
remove_suffix_file2new_path(old_path, new_path, ".json")
Categories: 文件操作

0 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *