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

时间:2016-02-25 15:00:13

标签: python python-2.7 variables filesize

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

部分代码要求我们检查我们写的文件是否包含任何数据 该文件已在代码中打开以进行写入:

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

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

  

TypeError:类型'文件'的对象没有len()

我有一些谷歌并找到了各种链接,例如here,但是当我尝试使用该行:os.stat(f).st_size > 512时,收到以下错误消息:

  

TypeError:强制转换为Unicode:需要字符串或缓冲区,找到文件

如果我尝试使用文件名本身: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()

编辑:感谢您与摩根的其他帖子的链接,但这对我没有用。主要的是程序仍然按文件路径和名称引用文件,而我需要通过变量名引用它。

1 个答案:

答案 0 :(得分:1)

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

  

os模块还提供了一个fstat函数,可用于   打开文件。它需要一个整数文件句柄,而不是文件对象,所以   你必须在文件对象上使用fileno方法:

     

此函数返回与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()