嗨我慢慢地尝试学习编写python代码的正确方法。假设我有一个文本文件,我想检查是否为空,我想要发生的是程序立即终止,控制台窗口显示错误消息,如果确实为空。到目前为止,我所做的事情写在下面。请教我如何处理这种情况的正确方法:
import os
def main():
f1name = 'f1.txt'
f1Cont = open(f1name,'r')
if not f1Cont:
print '%s is an empty file' %f1name
os.system ('pause')
#other code
if __name__ == '__main__':
main()
答案 0 :(得分:1)
无需open()
该文件,只需使用os.stat()
。
>>> #create an empty file
>>> f=open('testfile','w')
>>> f.close()
>>> #open the empty file in read mode to prove that it doesn't raise IOError
>>> f=open('testfile','r')
>>> f.close()
>>> #get the size of the file
>>> import os
>>> import stat
>>> os.stat('testfile')[stat.ST_SIZE]
0L
>>>
答案 1 :(得分:0)
这样做的pythonic方法是:
try:
f = open(f1name, 'r')
except IOError as e:
# you can print the error here, e.g.
print(str(e))
答案 2 :(得分:0)
答案 3 :(得分:0)
如果文件打开成功,'f1Cont`的值将是一个文件对象,并且不会为False(即使该文件为空)。一种方法可以检查文件是否为空(成功打开后)是:
if f1Cont.readlines():
print 'File is not empty'
else:
print 'File is empty'
if f1Cont.readlines():
print 'File is not empty'
else:
print 'File is empty'
答案 4 :(得分:0)
如果文件中有数据,假设您要读取文件,我建议在附加更新模式下打开文件并查看文件位置是否为零。如果是这样,文件中没有数据。否则,我们可以阅读它。
with open("filename", "a+") as f:
if f.tell():
f.seek(0)
for line in f: # read the file
print line.rstrip()
else:
print "no data in file"