在Python中达到一定大小后,阻止Python脚本写入文件

时间:2014-12-11 19:09:34

标签: python linux twitter

Python新手,Linux新手。我创建了一个可以挖掘Twitter的流媒体API的脚本。当流中的内容与我的参数匹配时,脚本会写入.csv文件。

我想知道在文件达到1 gig后是否有任何方法可以停止我的脚本。我知道cron可以用来计算脚本和所有内容的时间,但我更关心的是文件大小而不是花费的时间。

感谢您的投入和考虑。

2 个答案:

答案 0 :(得分:2)

在您的情况下,您可能不需要os.stat,而os.stat在某些情况下可能会给您一个错误的大小(即缓冲区不会刷新)。为什么不使用f.tell()来读取这样的大小

with open('out.txt', 'w', encoding='utf-8') as f:
    csvfile = csv.writer(f)
    maxsize = 1024                # max file size in bytes
    for row in data():
        csvfile.writerow(row)
        if f.tell() > maxsize:    # f.tell() gives byte offset, no need to worry about multiwide chars
            break

答案 1 :(得分:1)

使用python' s os.stat()获取文件信息,然后检查现有文件的总字节数(fileInfo.st_size)加上您要写入的数据大小

import os
fileInfo = os.stat('twitter_stream.csv')
fileSize = fileInfo.st_size
print fileSize

# Now get data from twitter
# determine number of bytes in data
# write data if  file size + data bytes < 1GB