检查分配给 Python 中变量的文件大小 2

Check Size of File Assigned to a Variable in Python 2

作为大学课程的一部分,我正在研究一些代码(我已经获得)。

部分代码要求,我们检查我们正在写入的文件是否包含任何数据。
文件已打开写入代码内:

f = open('newfile.txt', 'w')

最初,我以为我会找到文件的长度,但是如果我尝试:len(f)>512,我得到一个错误:

TypeError: object of type 'file' has no len()

我有一点 google 并发现了各种 link,例如 here,但是当我尝试使用行:os.stat(f).st_size > 512 时,我收到以下错误消息:

TypeError: coercing to Unicode: need string or buffer, file found

如果我尝试使用文件名本身:os.stat("newfile.txt").st_size > 512,它工作正常。

我的问题是,有没有一种方法可以使用分配给文件的变量,f,或者这是不可能的?

对于上下文,函数如下所示:

def doData ():
global data, newblock, lastblock, f, port
if f.closed:
    print "File " + f.name + " closed"
elif os.stat(f).st_size>512:
    f.write(data)
    lastblock = newblock
    doAckLast()

编辑:感谢 link 给其他 post 摩根,但这对我不起作用。最主要的是程序仍然通过文件路径和名称引用文件,而我需要通过变量名来引用它。

根据 effbot 的 Getting Information About a File 页面,

The os module also provides a fstat function, which can be used on an opened file. It takes an integer file handle, not a file object, so you have to use the fileno method on the file object:

This function returns the same values as a corresponding call to os.stat.

f = open("file.dat")
st = os.fstat(f.fileno())

if f.closed:
    print "File " + f.name + " closed"
elif st.st_size>512:
    f.write(data)
    lastblock = newblock
    doAckLast()