精华内容
下载资源
问答
  • python脚本文件删除

    2016-06-15 21:14:00
    昨天有需求需要用python脚本删除一个目录下的文件。遇到了点麻烦。 使用的是shutil.rmtree(dir)函数,这个函数可以删除内容的目录,而shutil.rmdir(dir)只能删除空目录。 1、一删除就报错,最后怀疑是账户权限...

    昨天有需求需要用python脚本删除一个目录下的文件。遇到了点麻烦。

     

    使用的是shutil.rmtree(dir)函数,这个函数可以删除有内容的目录,而shutil.rmdir(dir)只能删除空目录。

    1、一删除就报错,最后怀疑是账户权限问题,更改了账户的权限以后,可以删除部分文件了,但还是有文件不可以删除

    2、在网上查到可能是因为文件属性的问题,果真删不掉的文件都是只读的。如果想删除这些文件需要先修改其属性。

     

    shutil模块是没有类似函数的,于是自己仿照shutil.rmtree函数写了一个,在删除文件之前就先os.chmod(file, stat.S_IWRITE)一下就好啦。

    记得是要import os, sys, stat 才行的。

    python用的不多,不过一些权限问题确实折腾了一会儿才弄明白。

    转载于:https://www.cnblogs.com/huoqs/p/5588924.html

    展开全文
  • python修改txt部分内容,并保存的思路: 1.打开txt文件和缓存文件; 2.for循环遍历txt文件每行的内容; 3.在遍历中找到要修改的内容; 4.找到要修改的内容后进行替换,替换成新内容; 5.替换成新内容后,写进...

    python修改txt部分内容,并保存的思路:

    1.打开txt文件和缓存文件;

    2.for循环遍历txt文件每行的内容;

    3.在遍历中找到要修改的内容;

    4.找到要修改的内容后进行替换,替换成新内容;

    5.替换成新内容后,写进缓存文件(.bak文件);

    6.全部写进缓存文件后,把原来的txt文件删除;

    7.缓存文件更名为原来txt文件名字。

    就这样,借用缓存文件作为空杯子,把修改的内容先放进空杯子,空杯子装了东西后再贴上原来txt文件的名字,就变成了想要的结果。

    代码如下:

    import os
    def alter(file,old_str,new_str):
      :param file: 文件路径
    :param old_str: 需要替换的字符串
    :param new_str: 替换的字符串
      with open(file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:
            for lin in f1:
    print(lin)
    if old_str in lin:
    lin = lin.replace(old_str, new_str)
    f2.write(lin)
    os.remove(file)
    os.rename("%s.bak" % file, file)

    alter(r"E:\abc\1.txt", "a", "b")#将"E:\abc"路径的1.txt文件把所有的a改为b

     

    转载于:https://www.cnblogs.com/huangwancheng/p/10768242.html

    展开全文
  • 1)将image文件里有上千张图片,其中大部分图片是内容相同,但是名称不同的文件。 2)去重原则是通过计算每张图片md5,md5值相同,则表示内容相同,则可以删除。 以字典方式保存第一张图片得md5值(value)和图片名称...

    本篇文章记录学习:

    一、实现功能

    1.image文件去重

    1)将image文件里有上千张图片,其中大部分图片是内容相同,但是名称不同的文件。
    2)去重原则是通过计算每张图片md5,md5值相同,则表示内容相同,则可以删除。

    • 以字典方式保存第一张图片得md5值(value)和图片名称(key)
    • 以字典方式保存删除图片名称(key)和已存MD5 对应的图片名称(value)

    备注:保存删除图片名称得意义:将SVG文件调用删除图片的连接名称修改为第一张图片的名称。。

    在这里插入图片描述

    2.查找其他文件里包含“删除图片”的字符串

    在这里插入图片描述

    在这里插入图片描述

    • 通过正则表达式,逐一打开所在目录的svg文件,逐行查找,根据正则表达式规则查中找是否有匹配的图片名称的字符串,
    • 如果有匹配的图片名称字符串,判断字符串是否在all_svg_jpg字典中
    • 如果在,则进行替换,如果不在,则进行源文件内容打印
    # coding=UTF-8
    import re
    import hashlib
    import os
    import time
    import logging
    import logging.handlers
    
    LOG_FILE = 'svg_parser.log'
    
    handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes=1024 * 1024, backupCount=5)  # 实例化handler
    fmt = '%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s'
    
    formatter = logging.Formatter(fmt)  # 实例化formatter
    handler.setFormatter(formatter)  # 为handler添加formatter
    
    logger = logging.getLogger('svg_parser')  # 获取名为tst的logger
    logger.addHandler(handler)  # 为logger添加handler
    logger.setLevel(logging.DEBUG)
    
    
    def getmd5(filename):
        """
        获取文件 md5 码
        :param  filename: 文件路径
        :return: 文件 md5 码
        """
        file_txt = open(filename, 'rb').read()
        # 调用一个md5对象
        m = hashlib.md5(file_txt)
        # hexdigest()方法来获取摘要(加密结果)
        return m.hexdigest()
    
    
    def getallkey(path):
        """
            1.将image文件夹里数据通过md5 码判断是否是相同内容不同名字的文件,如果是则保留第一次遇到的文件名及md5.
            2.将1对多图片(重复的图片名称和需要替换的图片名称)保存在all_svg_jpg字典:
                all_svg_jpg的key为将在SVG文件里查找到的图片名称
                all_svg_jpg的value将SVG文件里查找到的图片名称替换的新名称
            :param  path: 程序所在路径,也就是svg所在路径,与image文件夹级别相同
            :return: 空
            """
        # 文件夹路径
        # path = input("path: ")
        image_path = path + "\image"
        # 存放文件的 md5 码
        all_svg = {}  # 改为字典
        global all_svg_jpg
        all_svg_jpg = {}  # 存储所有svg里面的链接的jpg、gif 与image下的jpg、gif对应值。
    
        total_save = 0
        total_file = 0
        total_delete = 0
    
        # 开始时间
        # start = time.time()
        # 遍历文件夹下的所有文件
        for file in os.listdir(image_path):
            # 文件数量加 1
            total_file += 1
            # 文件的路径
            # real_path = os.path.join(path, file)
            real_path = image_path + "\\" + file
            filename = os.path.split(real_path)[1]
            # 获取image文件的md5码
            filemd5 = getmd5(real_path)
            # 如果文件 md5 已存在,则删除此文件
            if filemd5 in all_svg.values():  # 字典的值为已存在的文件 md5 码
                total_delete += 1
                for svgnamekey, svgmd5value in all_svg.items():
                    if svgmd5value == filemd5:
                        # print(f"svgnamekey= {svgnamekey}  svgmd5value = {svgmd5value} filename :{filename}")
                        all_svg_jpg[filename] = svgnamekey
                        os.remove(real_path)
                        # print('删除', real_path)
            else:
                # 如果文件 md5 不存在,则将此文件的 md5 码添加到 all_svg 字典中,文件名为key,文件value为md5
                all_svg[filename] = filemd5
    
        # 结束时间
        # end = time.time()
        # time_last = end - start
        # for key, value in all_svg_jpg.items():
        #     # print(f"key= {key}  value = {value}")
        #     total_save += 1
        print('image文件总数:', total_file)
        print('删除image个数:', total_delete)
        logger.info(f'image文件总数:{total_file}')
        logger.info(f'删除image个数:{total_delete}')
        # print('耗时:', time_last, '秒')
        # print('存储键值对个数:', total_save)
    
    
    def alter(file):
        """
           1.逐一打开所在目录的svg文件,逐行查找,根据正则表达式规则查中找是否有匹配的图片名称的字符串,
           2.如果有匹配的图片名称字符串,判断字符串是否在all_svg_jpg字典中
           3.如果在,则进行替换,如果不在,则进行源文件内容打印
    
    
            :param  file: svg所在路径
            :return: bFind   False:没修改文件 True:成功修改文件
            """
        bFind = False
        with open(file, "r", encoding="utf-8") as f1, open("%s.bak" % file, "w", encoding="utf-8") as f2:
            for line in f1:
                search_obj = re.search(
                    "image/([0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}.(jpg|gif|png))",
                    line)
                if search_obj:
                    # 在svg文件中找到匹配的图片,判断该图片是否在all_svg_jpg字典中,如果在,则进行替换,修改SVG文件并保存
                    for key, value in all_svg_jpg.items():
                        if key == search_obj.group(1):
                            print(f"file :{file}  旧字符串= {search_obj.group(1)}  新字符串 = {value}")
                            logger.info(f"file :{file}  旧字符串= {search_obj.group(1)}  新字符串 = {value}")
                            # 修改SVG
                            f2.write(re.sub(search_obj.group(1), value, line))
                            bFind = True
    
                else:
                    f2.write(line)
    
        os.remove(file)
        os.rename("%s.bak" % file, file)
    
        return bFind
    
    
    def filepath():
        global path
        path = os.getcwd()  # 获取指定路径下的文件
        dirs = os.listdir(path)
        # 准备要替换的数据
        # print(path)
        getallkey(path)
        total_file = 0
        total_right = 0
        total_wrong = 0
    
        for svgname in dirs:  # 循环读取路径下的文件并筛选输出
            if os.path.splitext(svgname)[1] == ".svg":  # 筛选svg文件
                # print(svgname)
    
                num = alter(svgname)
                total_file += 1
                if num > 0:
                    total_right += 1
                else:
                    total_wrong += 1
        print('SVG文件总数:', total_file)
        print('修改SVG个数:', total_right)
        print('未修SVG改个数:', total_wrong)
        logger.info(f'SVG文件总数:{total_file}')
        logger.info(f'修改SVG个数:{total_right}')
        logger.info(f'未修SVG改个数:{total_wrong}')
    
    
    if __name__ == '__main__':
        filepath()
        time.sleep(60)
    
    
    展开全文
  • 本文为大家整理了10个常用的相关命令,涉及查看信息、更改信息、删除文件等,并提供了相应的终端命令,帮助大家更高效地对文件系统及其中的文件内容进行操作。 通过一个能够实现与文件系统进行交互的Python程序,...

    在编写一些Python程序的时候,我们常常需要与文件系统进行交互。本文为大家整理了10个常用的相关命令,涉及查看信息、更改信息、删除文件等,并提供了相应的终端命令,帮助大家更高效地对文件系统及其中的文件内容进行操作。

    在这里插入图片描述

    通过一个能够实现与文件系统进行交互的Python程序,我们可以实现很多有趣的应用,但是大部分人并不知道如何实现这种交互。

    os模块主要用于与操作系统交互,shutil模块则包含一些针对文件的操作。一般情况下,我们使用os创建目录,使用shutil移动和复制文件。

    一、获取信息(Get Info)

    • os.getcwd():以字符串形式获取当前工作目录路径 → pwd
    • os.listdir() :以字符串列表的形式获取当前工作目录的内容→ls
    • os.walk(“starting_directory_path”):返回一个生成器(generator),该生成器包含当前目录和所有子目录中的文件名称及路径信息;→没有完全等价的shell命令,不过ls -R 命令提供了子目录名称和子目录中的文件名称

    在这里插入图片描述

    二、更改信息(Change Things)

    • os.chdir("/absolute/or/relative/path"):更改当前的工作路径→ cd

    • os.path.join():创建路径供后续使用→ 没有等效的命令

    • os.makedirs(“dir1 / dir2”):创建目录→ mkdir - p

    • shutil.copy2(“source_file_path”,“destination_directory_path”):复制文件或目录→ cp

    • shutil.move(“source_file_path”,“destination_directory_path”):移动文件或目录→ mv

    • os.remove(“my_file_path”):删除文件→ rm

    • shutil.rmtree(“my_directory_path”):删除路径及其包含的所有文件和目录→ rm –rf

    以上是对十个最常用、基础的文件系统方法的初步介绍,接下来我们再深入讲解一些重要的模块和使用方法。

    以字符串列表形式返回当前目录

    	os.walk("my_start_directory")
    

    创建一个生成器,用于返回关于当前目录和子目录的信息。在起始指定的目录中有效。

    os.walk() 遍历包含的每个目录后,都会返回下列项:

    (1)当前目录路径(字符串类型)

    (2)当前目录下的子目录名称(字符串列表类型)

    (3)当前目录中的文件名称(字符串列表类型的)

    os.walk

    使用带有for循环的os.walk()来遍历目录及其子目录的内容通常很有用。例如,下面的代码将打印当前工作目录的目录和子目录中的所有文件。

    import os	
    cwd = os.getcwd()	
    for dir_path, dir_names, file_names in os.walk(cwd):	
        for f in file_names:	
            print(f)
    以上是获取信息的操作。下面让我们一起看一下更改工作目录或移动、复制、删除文件系统的命令。
    

    以上是获取信息的操作。下面让我们一起看一下更改工作目录或移动、复制、删除文件系统的命令。

    os.chdir("/absolute/or/relative/path")
    

    此方法将当前工作路径更改为绝对路径或相对路径。

    如果随后要对文件系统进行其他更改,在试用该方法时留意处理任何异常。否则,您可能正在删除不希望删除的目录或文件。

    os.path.join()

    os.path.join()
    

    os.path模块提供了许多用于路径名操作的有用方法。您可以使用它查找有关目录名称,或者目录名称的部分信息。该模块还可以用来检查文件或目录是否存在。

    os.path.join()
    提供将多个字符串完美连接在一起的文件路径,而且是在大多数操作系统上都可以工作的路径。该模块文档的描述为,该命令可以“更加智能的连接一个或多个路径组件,返回值是路径或路径的任何成员路径的连接,每个非空路径后都有一个目录分隔符(os.sep),最后一个除外”。

    另外,如果使用的是Unix或macOS系统,os.path.join()会在每个字符串之间添加一个斜杠(" / ")来创建路径。如果操作系统需要“\”,那么join会自动使用反斜杠。

    os.path.join()还向其他开发人员提供了创建路径的明确信息。强烈建议读者多使用这个命令,不要每次都手动添加斜杠。

    在这里插入图片描述

    os.makedirs("dir1/dir2")
    

    os.makedirs()能够生成目录。mkdir()方法也可以生成目录,但它不生成中间目录。所以建议使用os.makedirs()。

    shutil.copy2("source_file", "destination")
    

    在Python中复制文件和目录的方法有很多,但建议使用此命令。shutil.copy2()的优势在于,它尽可能地保留了源文件的元数据。

    使用shutil.move()更改文件的位置。它使用 copy2 作为后台参数默认值。

    shutil.move("source_file", "destination")
    

    当需要删除文件时,可以使用os.remove()工具。

    os.remove("my_file_path")
    

    shutil.rmtree() 删除一个目录及其中的所有文件和目录。 慎用!

    展开全文
  • 当数据量很大时,要自动删除某个文件夹内的某些文件,os.walk()用来遍历该目录[层层遍历],shutil.rmtree用来删除该文件夹及其内容。for parent,dirnames,filenames in os.walk(path): #parent为所给path的下一级...
  • Python 文件粉碎机.rar

    2019-12-11 16:56:29
    python开发的文件粉碎小工具,普通删除文件仅将文件表删除,文件内容可被恢复。这个小工具可用于防止文件被恢复,并已用pyinstaller转为exe文件存放在dist文件夹中,由于涉及到文件删除等,安全软件可能会误报木马...
  • Python文件的基本操作本人简要介绍了...对文件内容的处理,比如查找字符,删除相关字符等可以参考正则方面的文章。1.Python命令:open,read,readline,readlines,string.split,write,close2.代码及部分注释。im...
  • 部分内容参考自网络。 下文涉及到os模块和shutil模块 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来删除一个文件:os....
  • 一般删除文件时,操作系统并没有真正的删除文件,只是删除了文件的索引关系。大部分的文件还是可以通过恢复软件恢复,而且即使不能恢复,也能从恢复软件中看到删除的文件的文件名称。该脚本地设计主要思路是修改指定...
  • python-文件操作(2)

    2012-09-14 00:39:07
    os模块负责大部分的文件系统操作,包括:删除文件、重命名文件、遍历目录树等;os.path模块提供了一些针对路径名的操作,包括:获取文件和子目录信息,文件路径查询等。 1. os模块 remove(path) 删除文件 ...
  • Python文件的增删改查

    千次阅读 2018-03-17 16:23:03
    增加:利用写,增加文件内容删除:将文件打开方式变为‘w’'w+'来删除全部文件内容。也可以通过截断函数truncate()删除需要删除部分修改:(1)可以将文件全部加载在内存中,在写到原文件。此方法一般不采用,常用...
  • 假设你正在编写的方法,需要每次执行时,在服务器上创建一个临时文件同时支持书写部分内容,而后将该文件的位置传输给第三方的类。待第三方类获取到你文本内的数据时,最后执行对该临时文件删除操作,同时需要支持...
  • 本文为大家整理了10个常用的相关命令,涉及查看信息、更改信息、删除文件等,并提供了相应的终端命令,帮助大家更高效地对文件系统及其中的文件内容进行操作。 通过一个能够实现与文件系统进行交互的Python程序,...
  • day3-python-文件操作(2)

    2016-01-22 10:06:00
    os模块负责大部分的文件系统操作,包括:删除文件、重命名文件、遍历目录树等;os.path模块提供了一些针对路径名的操作,包括:获取文件和子目录信息,文件路径查询等。1. os模块remove(path) 删除文件rename(src,...
  • 之后,我们还将介绍如何删除文件和目录,如何复制和删除文件,以及怎样将一个完整的文件路径分解成目录部分和文件名部分,最后,我们讲解目录的创建,以及如何在目录树中移动目录并处理文件。 一、显示目录内容 当...
  • 本文中,为大家整理了10个常用的相关命令,涉及查看信息、更改信息、删除文件等,并提供了相应的终端命令,帮助大家更高效地对文件系统及其中的文件内容进行操作。 通过一个能够实现与文件系统进行交互的Python...
  • 基本流程为:读取文本文件(每一行存储一条文本数据),删除每个字符串开头部分的子串,再删除中间某一段子串,最后把清理后的字符串写入一个文本文件。 算法实现 #读取文本文件 def ReadTxtFile( fileNam...
  • Python的文件系统一、打开文件并读取二、文件的打开方式三、文件内容的读取方式四、文件的写入方式4.1 追加写入a4.2 覆盖写入w五、二进制文件的处理六、删除和重命名文件6.1 重命名文件rename()6.2 删除文件 ...
  • 于是花了一个晚上的时间更改文件后缀名为txt,并将文件部分内容进行删除,剩下需要提取的部分。大大小小的文件有几十个吧,花了不少功夫。 较长时间没写python了,主要用到 正则表达式 和 文件读写功能。写的过程...
  • 而Excel被设置为在保存文件时自动删除文件属性中的个人信息,因而出现该对话框。如果要避免出现这个提示,可进行如下设置: Excel 2003:单击菜单“工具→选项→安全性”,在“个人信息选项”下取消“保存时从文件...
  • 代码涉及读取excel文件内容,写入word文档,路径、文件等相关切换、删除等,布局,label,entry,button,listbos,Scrollbar等。后面代码会一一讲解。 代码部分: 1.文档说明: #############################...
  • 一.需求分析 ... 本程序主要分成两部分,接口部分与主函数处理部分,接口部分主要是用于编写三个接口,添加、删除、查询接口,此部分程序存储在Data_Deal.py函数中,主函数程序则执行系统的主...
  • 文件中拿出数据,进行排序【这部分需要根据自己的需求来自定义编写,可以留言交流】 删除需要删除的镜像。 脚本内容 #coding:utf-8 def get_date_time(date_list,date_range,version_date_range): ''' 获取...
  • 如果说是有序的数字存储在文件中的话,这些范围就对应了20段数字,我们只需要删除中间的文件以及前后文件中的部分内容即可。 这里提供了两个简单的删除顺序文件以及文件内顺序数字的函数供读者调用。(注意函数中...
  •  从workbench中导出了一张数据表的sql脚本,把扩展名改为.py,将无关内容删除,只留下元组格式的数据部分(含有汉字),用vi编辑器将圆括号全部替换成方括号。数据成为了n维数组,将其赋值给变量a,在数据后边编写...
  • awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。由「开源前哨...
  • Python Cookbook

    2013-07-31 22:33:26
    2.20 在Python的搜索路径中寻找文件 88 2.21 动态地改变Python搜索路径 89 2.22 计算目录间的相对路径 91 2.23 跨平台地读取无缓存的字符 93 2.24 在Mac OS X平台上统计PDF文档的页数 94 2.25 在Windows平台上...
  • ├─(62) 07 python s3 day49 django静态文件之static.avi ├─(63) 08 python s3 day49 django的url控制系统.avi ├─(64) 09 python s3 day49 django的urlConf补充.avi ├─(65) day49课上所有.zip (14)\\python...
  • python3 shutil模块

    2018-04-23 09:12:05
    主要作用是拷贝文件、拷贝文件的权限、状态信息以及压缩文件、移动文件、删除文件 """ # 将一个文件对象的内容拷贝到另一个文件对象中,可以部分内容 """ f1 = open(r'E:\pythondata\...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 167
精华内容 66
关键字:

python删除文件部分内容

python 订阅