其他
Python实用脚本:删除小文件
在 windows 下,删除特定大小的文件是非常简单的,一个简单的 powershell 脚本命令就可以搞定。
比如删除小于6KB的 png 格式的文件:
ls -Filter *.png | where {$_.Length -lt 6KB} | Remove-Item -Force-Recurse
我最近用 Stable Diffusion AI 画图工具画了一些图。有一些图是纯黑的失败作品。因为纯色图片相对是比较小的,就可以用上面的脚本删除掉。
但是,因为我在AI画图的时候,会把每一步的图的标签也存下来,所以每一个 png 文件,都会有一个对应的 txt 文件,也是要删除的。所以,我就写了一个 python 脚本,删除指定大小的文件,和相关的 txt 文件。
import os
import argparse
def get_all_files(path,ext,size):
all_files = []
for root, _dirs, files in os.walk(path):
for filename in files:
if ext is None or filename.endswith(ext):
file_path = os.path.join(root, filename)
if os.path.getsize(file_path) < size:
all_files.append(file_path)
return all_files
def remove(all_files):
for filename in all_files:
info_file = os.path.splitext(filename)[0] + '.txt'
os.remove(filename)
if os.path.exists(info_file):
os.remove(info_file)
def show_filesize(file_path):
size = os.path.getsize(file_path)
if size < 1024:
return str(size) + 'B'
elif size < 1024 * 1024:
return str(round(size / 1024, 2)) + 'KB'
elif size < 1024 * 1024 * 1024:
return str(round(size / 1024 / 1024, 2)) + 'MB'
else:
return str(round(size / 1024 / 1024 / 1024, 2)) + 'GB'
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='一个按大小删除文件的脚本')
parser.add_argument('-f','--folder',type=str,default=os.getcwd(), help='要操作的文件夹')
parser.add_argument('-s','--size', type=int, help='文件大小,单位为KB',default=0)
parser.add_argument('-e','--ext', type=str, help='文件类型')
parser.add_argument('-ch','--check', type=bool, help='是否检查文件大小',default=False)
args = parser.parse_args()
size = args.size * 1024
all_files = get_all_files(args.folder,args.ext,size)
if args.check:
for filename in all_files:
print(filename,show_filesize(filename))
else:
print('remove...')
remove(all_files)
print('done')
使用如下:
python .\remove.py -f D:\txt2img-images -s 10 -e txt -ch true
往期推荐
欢迎关注我的公众号“码农真经”,原创技术文章第一时间推送。