问题:对批量txt文件做一些读写操作,一遇到为空的文件使得程序报错并终止,怎么判断一个txt文件内容是否为空,为空的话怎么跳过这些文件以继续下面的操作,并将为空的txt文件夹名称打印输出呢?
解决思路:
1、os.path.getsize() 返回文件的字节数,如果为 0,则代表空。
2、continue继续下面的操作
代码展示:`
import os
for filename_1 in os.listdir(r"G:/Deep_Code/yolov4-pytorch-master/map_out/detection-results/"):
print(filename_1)
#for txt_name in filename_1.readlines():
#txt_name = txt_name.strip('\n')
#print(txt_name)
filename_1 = filename_1.strip('/n')
#遍历detection-results里txt的路径
detection_results_txt_path = os.path.join('G:/Deep_Code/yolov4-pytorch-master/map_out/detection-results/', filename_1)
#打开txt
with open (detection_results_txt_path) as txt_1:
#遍历txt的每一行
#新建一个列表,将每个目标的像素面积放入到该列表当中
if not os.path.getsize(detection_results_txt_path):
print(filename_1, " is empty!")
continue
增加判断的内容代码为:
if not os.path.getsize(detection_results_txt_path):
print(filename_1, " is empty!")
continue
之后程序成功执行完毕。
拓展:
1、将判断为空的文件夹删除,并继续
import os
for filename_1 in os.listdir(r"G:/Deep_Code/yolov4-pytorch-master/map_out/detection-results/"):
print(filename_1)
#for txt_name in filename_1.readlines():
#txt_name = txt_name.strip('\n')
#print(txt_name)
filename_1 = filename_1.strip('/n')
#遍历detection-results里txt的路径
detection_results_txt_path = os.path.join('G:/Deep_Code/yolov4-pytorch-master/map_out/detection-results/', filename_1)
#打开txt
with open (detection_results_txt_path) as txt_1:
#遍历txt的每一行
#新建一个列表,将每个目标的像素面积放入到该列表当中
if not os.path.getsize(detection_results_txt_path):
print(filename_1, " is empty!")
os.remove(filename_1)
continue
2、判断文件是否存在
os.path.exists() 方法用于检验文件 / 文件夹是否存在。
import os
path = "/home/wzh/predict_dir"
file = "/home/wzh/predict_file"
if not os.path.exists(path):
os.path.makedirs(path)
if not os.path.exists(file):
pass
3、先判断文件是否存在,如果存在则判断是否为空:
# 文件是否存在,以及是否为空
file = "/home/wzh/predict_file.txt"
if os.path.exists(file):
print(file, " is exists!")
sz = os.path.getsize(file)
if not sz:
print(file, " is empty!")
else:
print(file, " is not empty, size is ", sz)
else:
print(file, " is not exists!")
参考博客链接:https://blog.csdn.net/sinat_26811377/article/details/107368659