在Python中检查文件是否为空
我们将学习如何检查文件是否为空。我们还看一下在Python中检查空文件时出现的不同问题。
在Python中检查空的文本文件
如果你正在做批处理或处理一个更大进程的那部分,你不会把任何输出放到屏幕上。你会有不同的警报,让你知道发生了什么,这样你就可以中断和修复事情。
但在这个演示中,我们创建了三个文件,csv
,text
和excel
;这三个文件都是空的。我们想告诉你,我们输入代码的速度非常快。
在我们的案例中,文件大小有0kb,因为我们的文件是空的,但在你的案例中,即使你有一个空文件,大小也可能不同。当我们检查一个文件是否为空时,文件大小很重要,因为我们在Python代码中使用文件大小。
现在我们将跳到代码中,测试一个文本文件是否为空,为了测试;我们将从pathlib
模块中导入Path
类。Path
类使我们能够访问本地驱动器或可能是网络驱动器上的行程路径目录,或者是文件的实际路径所在。
首先,我们定义一个名为If_TextFileEmpty()
的函数,并在该函数内创建一个名为my_file
的变量。我们将调用Path()
类,并定义一个文件的路径;我们将r
放在字符串前面,以避免出现unicode错误。
my_file = Path(r'C:UsersDellDesktopdemofilesMytextfile.txt')
现在我们将定义一个基本的检查,即使用is_file()
方法检查这两个文件是否确实存在。我们将定义下一个块,使用os
模块中的getsize()
函数检查文件是否为空。
from pathlib import Path
import os
def If_TextFileEmpty():
my_file = Path(r'C:UsersDellDesktopdemofilesMytextfile.txt')
if my_file.is_file():
print('This file exists, ok!')
else:
print('This file does not exists, make sure are putting correct path')
if os.path.getsize(my_file) >0:
print('This file is not an empty file, process done!')
else:
print('This is an empty file.')
If_TextFileEmpty()
在这两种情况下,如果if
语句没有找到True
的值,那么将执行else
块。
This file exists, ok!
This is an empty file.
在Python中检查空的Excel文件
上面的代码有一个问题;我们有一个空文件,但其大小不是8kb。这在CSV
或Excel
文件中可以看到。
由于我们有一个Excel文件,而且它的大小是8kb,我们将使用一种不同的方法。
为了使用这种方法,我们将导入pandas
库并调用读取Excel文件的read_excel()
方法。使用if
语句,我们将使用一个名为empty
的属性来检查这个Excel文件是否为空,并返回一个布尔值。
import pandas as pd
def IsExcelFileEmpty():
My_Excelfile=pd.read_excel('C://Users//Dell//Desktop//demo//files//myexcelfile.xlsx')
if My_Excelfile.empty:
print('This excel file is empty.')
else:
print('This excel file is not empty.')
IsExcelFileEmpty()
输出:
This excel file is empty.
在Python中检查空的CSV文件
但是上面的代码对csv
文件不起作用,并引发了一个错误,因为这是一个空文件,而我们正在指示 Python 读取这个文件。在这种情况下,它将开始阅读,发现没有列,并引发一个异常。
File "pandas_libsparsers.pyx", line 549, in pandas._libs.parsers.TextReader.__cinit__
pandas.errors.EmptyDataError: No columns to parse from file
我们将在try
块中捕获这个异常。我们不需要使用empty
属性;显然,如果try
块捕捉到一个异常,它将进入except
块。
import pandas as pd
def If_csvfileEmpty():
try:
My_csvFile=pd.read_csv('C://Users//Dell//Desktop//demo//files//mycsvfile.csv')
except:
print('This CSV file is empty.')
else:
print('This CSV file is not empty.')
If_csvfileEmpty()
输出:
This CSV file is empty.