python怎么删除上一行命令,python怎样删除文件中的指定内容

  python怎么删除上一行命令,python怎样删除文件中的指定内容

  因为工作原因,需要定期清理某个文件夹下所有创建一年以上的文件,所以今天我重点讲了Python对本地文件和文件夹的操作。这篇网上文章简明整理了最常见的os方法,并抄袭如下:

  Os.listdir(dirname):在dirname下列出目录和文件。

  Os.getcwd():获取当前工作目录。

  Os.curdir:返回当前目录(.)

  Os.chdir(dirname):将工作目录更改为dirname。

  Os.path.isdir(name):判断name是否是目录,如果name不是目录则返回false。

  Os.path.isfile(name):判断名称是否为文件,如果没有名称则返回false。

  Os.path.exists(name):确定是否有文件名或目录名。

  Os.path.getsize(name):获取文件大小,如果名称是目录则返回0L。

  Os.path.abspath(name):获取绝对路径

  Os.path.normpath(path):规范的路径字符串形式

  Os.path.split(name):将文件名从目录中拆分出来(实际上,如果你完全使用目录,它也会将最后一个目录作为文件名拆分出来,它不会判断文件或目录是否存在)

  Os.path.splitext():分隔文件名和扩展名。

  Os.path.join(path,name):用文件名或目录连接目录。

  Os.path.basename(path):返回文件名。

  Os.path.dirname(path):返回文件路径。

  Os.remove(dir) #dir是要删除的文件夹或文件路径。

  OS . rmdir(path)#要删除的目录的路径。需要注意的是,使用os.rmdir删除的目录必须是空目录,否则函数会出错。

  Os.path.getmtime (name) #获取文件的修改时间

  Os.stat(路径)。获取文件的修改时间

  Os.stat(路径)。st_ctime #获取文件修改时间

  Os.path.getctime(name)#获取文件的创建时间

  于是我就按照这些方法,花了半天时间试着写出了“清理某个路径下的所有文件和文件夹”的方法。代码如下:

  导入操作系统

  dire empted= d:\ _ data \ Python \ OS #要清空的文件夹

  ds=list(OS . walk(dirtobeempted))#获取所有文件夹的信息列表

  Dsr=ds[:-1] #反转列表,从最底层的文件夹开始清除。

  在DSR: #遍历列表

  打印(d) #打印出列表项并遵守规则。

  如果d[2]!=[]: #如果此路径中有文件

  d [2]中的x:#先清理文件。

  os.remove(os.path.join(d[0],x))

  对于DSR: #再次遍历列表

  如果d[1]!=[]: #如果该路径下有子文件夹

  对于d[1]中的y:#清理子文件夹

  os.rmdir(os.path.join(d[0],y))

  之所以这么麻烦,是因为os.rmdir()有问题,只能删除“空”文件夹。所以只能从底层文件夹开始清理,一级一级的清理。

  想了想,应该有更简单的方法,因为清空文件夹是一个很常见的动作。查了Python官方文档,发现了os之外的另一个模块:shutil(高级文件操作)。实际上有一个shutil.rmtree()的方法,不仅清空,还直接删除文件夹。太残忍了!

  为了“只是清空”,我用shutil模块重写了代码:

  导入shutil,os

  OS . chdir( d:\ _ data \ python \ OS )#输入要清空的目录

  Ds=list(os.listdir()) #获取该目录中所有文件或文件夹的列表

  对于ds中的:#遍历列表

  If.path.isfile (d): #如果列表项是文件

  操作系统.删除(d) #直接删除

  Else: #如果不是文件,那一定是文件夹

  Shutil.rmtree(d) #也直接删除。

  这就简洁多了。

  然而清空是一件乐事,却偏离了我最初的目的:我只想删除过期的文件,但文件夹和所有子文件夹都得保留。不难。在初始代码中,列表的第一次遍历是只删除文件,不删除文件夹。只要加上判断语句,确定文件是否过期,就可以达到目的。

  我要删除的文件,其实就是我做镜像备份的时候,为了恢复,从主机上临时删除或者更改的文件。随着时间的推移,这些文件将占用越来越多的空间,因此它们将在一年后过期。这些文件的一个特点是只会被复制一次,不会被修改,所以只需要判断其创建日期即可。

  想起来容易,但万万没想到Python对时间的处理是如此复杂!涉及到两个模块:datetime和time。有时间就要开始系统学习,但是在这里,我只关心现在需要的几个方法:

  Datetime.datetime.now() #获取当前时间,返回值格式类似Datetime.datetime (2017,12,14,1,29,24,406538)

  Datetime.timedelta() #为时间计算设置两个时间之间的间隔。可以设置的单位包括:(天=0,秒=0,毫秒=0,分钟=0,小时=0,周=0)。默认值都是0。

  Os.path.getctime() #获取文件的创建时间。返回值的格式是一个巨大的浮点数,是从1970年1月1日到这个创建时间的秒数。

  datetime . datetime . fromtimestamp()#将os.path.getctime()转换为与datetime.datetime.now()相同的格式,以便进行比较计算。

  弄清楚上面的乱七八糟之后,就可以写代码了:

  导入操作系统,日期时间

  dire empted= d:\ _ data \ Python \ OS #要清空的文件夹

  ds=list(OS . walk(dirtobeempted))#获取所有文件夹的信息列表

  delta=datetime . time delta(days=365)#将365天的文件设置为过期。

  Now=datetime.datetime.now() #获取当前时间

  对于ds中的:#遍历列表

  Os.chdir(d[0]) #在此级别输入路径,以防止文件被找到并报告错误。

  如果d[2]!=[]: #如果此路径中有文件

  d [2]中的x:#遍历这些文件

  ctime=datetime . datetime . fromtimestamp(OS . path . getctime(x))#获取文件创建时间

  If ctime (now-delta): #如果它是在天前创建的delta

  Os.remove(x) #被删除。

  呼~ ~ ~ ~ ~ ~ ~ ~

  太复杂了!不知道有没有更简单的方法.

  上面这个用Python删除本地目录中某个点之前创建的所有文件的例子,就是边肖分享的所有内容。希望能给大家一个参考,也希望大家多多支持剧本之家。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: