文件删除
整个删除,无论有没有文件
shutil.rmtree(file_path)
找到文件一个个删除
import os
for root, dirs, files in os.walk(top, topdown=False):
for name in files:
os.remove(os.path.join(root, name))
for name in dirs:
os.rmdir(os.path.join(root, name))
区别
import os
os.remove(path) # path是文件的路径,如果这个路径是一个文件夹,则会抛出OSError的错误,这时需用用rmdir()来删除
os.rmdir(path) # path是文件夹路径,注意文件夹需要时空的才能被删除
os.unlink('F:\新建文本文档.txt') # unlink的功能和remove一样是删除一个文件,但是删除一个删除一个正在使用的文件会报错。
import os
os.removedirs(path) # 递归地删除目录。如果子目录成功被删除,则将会成功删除父目录,子目录没成功删除,将抛异常。
os.remove()# 删除文件
os.unlink()# 删除文件。它是remove()方法的Unix名称。
shutil.rmtree()# 删除目录及其下面所有内容。
pathlib.Path.unlink()# 在Python 3.4及更高版本中用来删除单个文件pathlib模块。
获取文件大小
# !/usr/bin/python3.4
# -*- coding: utf-8 -*-
import os
# 字节bytes转化kb\m\g
def formatSize(bytes):
try:
bytes = float(bytes)
kb = bytes / 1024
except:
print("传入的字节格式不对")
return "Error"
if kb >= 1024:
M = kb / 1024
if M >= 1024:
G = M / 1024
return "%fG" % (G)
else:
return "%fM" % (M)
else:
return "%fkb" % (kb)
# 获取文件大小
def getDocSize(path):
try:
size = os.path.getsize(path)
return formatSize(size)
except Exception as err:
print(err)
# 获取文件夹大小
def getFileSize(path):
sumsize = 0
try:
filename = os.walk(path)
for root, dirs, files in filename:
for fle in files:
size = os.path.getsize(path + fle)
sumsize += size
return formatSize(sumsize)
except Exception as err:
print(err)
if __name__ == "__main__":
print(getDocSize("../detailhtml/20161103112313.html"))
# 1006.142578kb
print(getFileSize("../data/"))
# 111.856756M
从路径中获取文件名
方法一:split
s=r"C:\Users\Desktop\lesson\python\calss1.py"
s.split("\\")[-1] #输出为 class1.py
方法二:rfind
s=r"C:\Users\Desktop\lesson\python\calss1.py"
n=s.rfind("\\")#找到"\\"出现的位置
s[n+1:] #输出为 class1.py
s[:n] #输出为 'C:\\Users\\Desktop\\lesson\\python'
方法三:os.path.basename()
s='C:/Users/Desktop/lesson/python/calss1.py'
import os
os.path.dirname(s) #输出为 'C:/Users/Desktop/lesson/python'
os.path.basename(s) #输出为 class1.py