2012-01-05 76 views
0

我试图从日志文件中打印包含单词的行。使用Python在日志文件中读取/写入特定行

我已经做了一些研究,至今还没有找到一个很好的实现方法。

我现在有这样的代码:

FileInput = open(FILE, "r", encoding='utf-8') 

for line in FileInput: 
    if "DATA: " in line: 
     print line 

环顾四周之后,似乎是大多数人都在做它的方式,但我得到以下错误:类型错误:强迫为Unicode:需要字符串或缓冲区,NoneType发现。

我知道从“DATA:”设置的长度,行以十六进制值0A结束。

+0

“0A的十六进制值” - 您是指换行符?这是Python 2还是Python 3? – 2012-01-05 13:16:36

+0

是的,就像在一个新的行中。我不知道用十六进制或逐行扫描数据的最佳方法是什么?它是Python 3. – 2012-01-05 13:23:40

+0

在Python 3中,你应该说'print(line)',否则你会得到'SyntaxError'。我有这样的感觉,这不是你正在使用的确切代码。 – 2012-01-05 14:18:29

回答

1

无论您的文件变量不包含正确的字符串(我们可以看到在打开文件并在此粘贴结果之前,你可以做“打印(FILE)”的值吗?),或者文件没有​​以与utf-8兼容的方式进行编码。尝试在一个好的编辑器(如jEdit或Notepad ++)中打开它,看看编辑器告诉你它是什么,然后指定编码而不是utf。

+0

包含该变量的SQLite文件中存在破坏。感谢您的帮助。 – 2012-01-05 15:22:02

+0

谢谢Zeki,你能正式接受答案吗?只需点击答案左侧的复选框大纲即可。 :)干杯 – 2012-01-05 22:04:14

0

看来你需要使用

import codecs 
f = codecs.open(FILE, encoding='utf-8', mode='r') 

看看这里Unicode HOWTO

+0

谢谢你的帮助RanRag,但不幸的是我仍然得到相同的错误信息。 – 2012-01-05 13:26:04

+0

尝试在代码中检查“如果行不是无”。 – RanRag 2012-01-05 13:31:58

+0

仍然是一样的错误。再次感谢您的持续帮助。 – 2012-01-05 14:57:41

0

试试这个:

FileInput = open(FILE, "r") 
for line in FileInput: 
    if "DATA: " in line: 
     print(line) 
+0

我试过所有可能的变化,但仍然在FileInput部分获得相同的错误。 谢谢你的帮助。 – 2012-01-05 14:56:39

相关问题