路径问题

# !/usr/bin/env python
# -*- coding: utf-8 -*-
# __author__=="HAI"
"""a"""
# import sys
import os
def GetDesktopPathAndCreateFile(filename=None, *args):
    """
    得到桌面路径创建文件
    :param filename: -> x.txt
    :return: 创建常见文本文件
    """


    user_home_path = os.path.expanduser("~")

    if filename is None:
        target_path = os.path.join(user_home_path, 'Desktop')
    else:
        temp = list()
        for i in args:
            if isinstance(i, list):
                temp.extend(i)
            elif isinstance(i, tuple):
                temp.extend(list(i))
            else:
                temp.append(i)
        temp = list(map(lambda x: str(x), temp))
        # target_path =  os.path.join(user_home_path, 'Desktop', *temp, filename) # python 可以这么写
        if temp:
            temp_path = os.path.join(*temp)
        else:
            temp_path = ''
        target_path = os.path.join(user_home_path, 'Desktop', temp_path, filename)
        suffix = os.path.splitext(target_path)[-1]
        if not suffix:
            if not os.path.isdir(target_path):
                os.makedirs(target_path)
        else:
            flie_dirs, filename = os.path.split(target_path)
            if not os.path.isfile(target_path):
                if not os.path.isdir(flie_dirs):
                    os.makedirs(flie_dirs)
                flie_suffix = (".txt", ".doc", ".xls", ".wps", ".html", ".py")
                if suffix.lower() in flie_suffix:
                    with open(target_path, 'wb'):
                        pass

    return target_path

 

def remove_file_or_dir(filepath, flag=False, rm_all=False):
    """
    删除当前文件
    :param filepath:
    :param flag: 是否删除空目录
    :param rm_all: 是否删除当前路径下的所有文件,桌面路径删除到桌面到头
    :return:
    """

    def temp(path):
        """

        :param path:
        :return:
        """
        n = os.path.dirname(path)
        return n

    if rm_all:
        def rm_file_dir(n):
            """

            :param n:
            """
            if n:
                if os.path.exists(n):
                    list_path = os.listdir(n)
                    if list_path:
                        for _ in list_path:
                            if os.path.isfile(os.path.join(n, _)):
                                os.unlink(os.path.join(n, _))
                                # os.remove() unlink 和remove 一样
                            else:
                                t_p = os.path.join(n, _)
                                rm_file_dir(t_p)
                                if os.path.isdir(t_p):
                                    if not os.listdir(t_p):
                                        os.rmdir(t_p)
                    else:
                        os.rmdir(n)

        def loop_rm(n, desk_path):
            """
            :param n:
            :param desk_path:
            :return:
            """
            if n == dest_path:
                n = filepath
            else:
                temp_path = ''
            row = 0  # 防止死循环
            while n != dest_path:
                temp_path = n
                rm_file_dir(n)
                n = temp(n)
                row += 1
                if row > 10000:
                    return {"ret": False}
            rm_file_dir(temp_path)

        n = temp(filepath)
        dest_path = os.path.join(os.path.expanduser("~"), "Desktop")
        if dest_path in filepath or os.path.expanduser("~") in filepath:

            if n == os.path.expanduser("~") or n == os.path.dirname(os.path.expanduser("~")) or \
                    n == os.path.dirname(os.path.dirname(os.path.expanduser("~"))):
                return {"ret": False}
            loop_rm(n, dest_path)
        else:
            if os.path.dirname(os.path.dirname(os.path.expanduser("~")))in n:
                return {"ret": False}
            loop_rm(filepath, n)

    elif not flag:
            if os.path.isfile(filepath):
                os.remove(filepath)
    else:
        if os.path.isfile(filepath):
            os.remove(filepath)
        n = temp(filepath)
        while not os.listdir(n):
            os.rmdir(n)
            n = temp(n)
    return {"ret": True}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园悬赏任务平台对字典管理、论坛管理、任务资讯任务资讯公告管理、接取用户管理、任务管理、任务咨询管理、任务收藏管理、任务评价管理、任务订单管理、发布用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行校园悬赏任务平台程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。校园悬赏任务平台的开发让用户查看任务信息变得容易,让管理员高效管理任务信息。 校园悬赏任务平台具有管理员角色,用户角色,这几个操作权限。 校园悬赏任务平台针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理任务信息,管理任务资讯公告信息等内容。 校园悬赏任务平台针对用户设置的功能有:查看并修改个人信息,查看任务信息,查看任务资讯公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看任务,删除任务操作,新增任务操作,修改任务操作。任务资讯公告信息管理页面提供的功能操作有:新增任务资讯公告,修改任务资讯公告,删除任务资讯公告操作。任务资讯公告类型管理页面显示所有任务资讯公告类型,在此页面既可以让管理员添加新的任务资讯公告信息类型,也能对已有的任务资讯公告类型信息执行编辑更新,失效的任务资讯公告类型信息也能让管理员快速删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值