我有一个Django应用程序,它打开一个文件,不断读取它,同时将数据写入Postgres数据库。我的问题是每当我打开文件时,
file = open(filename, 'r')
我无法在数据库中创建新内容,
Message.objects.create_message(sys, msg)
那应该创建一个包含两个字符串的数据库条目。然而,似乎没有任何事情发生,我没有错误:(如果我决定关闭文件,file.close()
,在我写入数据库之前一切都很好。我的问题是我需要打开文件创建我的对象。有人有解决方案吗?谢谢。
修改
这是我的一些代码。基本上我在文件结束后有以下片段,然后在获取信息时写入数据库。
file.seek(0,2)
while True:
line = file.readline()
if not line:
time.sleep(1)
continue
Message.objects.create_message(sys, line)
编辑2
终于有了这个,但我不知道为什么。我很想知道为什么会这样:
str1ng = line[0:len(line)-1]
Message.objects.create_message(sys, str1ng)
该字符串与从file.readline()收集的字符串之间有何区别。 有什么想法吗?
答案 0 :(得分:3)
试试这个:
file = open(filename, 'r')
fileContents = file.read()
file.close()
答案 1 :(得分:2)
你尝试过linecache吗?这样的事情可能有效(未经测试)。
import linecache
i = 0
go = True
file = ...
while (go == True):
out = linecache.getline(file,i)
...process out...
i = i+1
if i % 100 == 0:
# check for cache update every 100 lines
linecache.checkcache(file)
if ( some eof condition):
go = False
linecache.clearcache()