How to check a file if it is empty without using with open?
本问题已经有最佳答案,请猛点这里访问。
我试图读取目录中的文本文件。但是,在执行任何操作之前,我要确保它不是空的。如果文本文件是空的,我需要再次创建该空文件(在当前目录中,也就是说),如果不是,我需要对文本文件的每一行执行一些计算,并使用相同的名称创建相应的文件。简言之,我需要创建所引用目录(
为了检查文本文件是否是空的,我认为应该先打开它。我用
有人能帮我修一下吗?
这是我的密码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import numpy as np import cv2, os from glob import glob path_in = 'C:\\Users\\user\\Desktop\\labels' for filename in os.listdir(path_in): filename_edited = [] with open(path_in + '\' +filename) as filename_handle: if os.stat(filename_handle).st_size == 0: filename_edited.append(filename_handle) else: for line in filename_handle: numericdata = line.split(' ') numbers = [] for i in numericdata: numbers.append(int(i)) c,x,y = numbers edited = [c, y, (19-x)] filename_edited.append(edited) filename_edited_array = np.array(filename_edited) with open(filename , 'wb') as f: np.savetxt(f, filename_edited_array,fmt= '%.1i', delimiter=' ', newline=' ', header='', footer='', comments='# ') continue |
所以你要么做:
1 | os.stat(filename_handle.fileno()).st_size |
从打开的文件中提取文件描述符,或者:
1 | os.stat(path_in + '\' +filename).st_size |
它按名称统计文件,需要一个打开的文件句柄。更恰当地说,您应该真的使用
可以使用os.path.getSize()方法获取作为参数传递的文件的大小(以字节为单位)。如果文件为空,则大小为0字节。因此,您可以使用下面的代码来检查它:
1 2 3 | import os if os.path.getsize('path/to/file.txt') == 0: # If the file size is 0 bytes # Implementation |