文件为空时显示错误消息 - 正确的方法?

时间:2011-05-10 17:28:42

标签: python

嗨我慢慢地尝试学习编写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()

5 个答案:

答案 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)

可能是this的副本。

从原来的回答:

import os
if (os.stat(f1name).st_size == 0)
    print 'File is empty!'

答案 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"