2006年10月24日 星期二 11:53
我在使用 file 对象分析一个日志文件,默认的 for line in file 或者 readlines, xreadlines 都会把 \r 和 \r\n 都当作分行来切割。 但是我需要的是准确的 \r\n 的分行方法(windows 的方式) 请问有没有办法在读取文件时修改 EOF 的定义?
2006年10月24日 星期二 11:54
因为我知道在 C# 中,一般类似程序都可以定义 Environment.NewLine 的具体定义,问问看 Python 是否也有此功能。 在 06-10-24,Neil<chenrong2003在gmail.com> 写道: > 我在使用 file 对象分析一个日志文件,默认的 > > for line in file > 或者 readlines, xreadlines 都会把 \r 和 \r\n 都当作分行来切割。 > 但是我需要的是准确的 \r\n 的分行方法(windows 的方式) > 请问有没有办法在读取文件时修改 EOF 的定义? >
2006年10月24日 星期二 11:58
我搞错了,C# 也不能设定此属性,只能读取。。 在 06-10-24,Neil<chenrong2003在gmail.com> 写道: > 因为我知道在 C# 中,一般类似程序都可以定义 Environment.NewLine 的具体定义,问问看 Python 是否也有此功能。 > > 在 06-10-24,Neil<chenrong2003在gmail.com> 写道: > > 我在使用 file 对象分析一个日志文件,默认的 > > > > for line in file > > 或者 readlines, xreadlines 都会把 \r 和 \r\n 都当作分行来切割。 > > 但是我需要的是准确的 \r\n 的分行方法(windows 的方式) > > 请问有没有办法在读取文件时修改 EOF 的定义? > > >
2006年10月24日 星期二 13:11
应该是EOL(End Of Line)吧? On 10/24/06, Neil <chenrong2003在gmail.com> wrote: > 我在使用 file 对象分析一个日志文件,默认的 > > for line in file > 或者 readlines, xreadlines 都会把 \r 和 \r\n 都当作分行来切割。 > 但是我需要的是准确的 \r\n 的分行方法(windows 的方式) > 请问有没有办法在读取文件时修改 EOF 的定义? > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- Davies Liu My Blog: http://blog.daviesliu.net/
2006年10月24日 星期二 13:25
先用read()全部都出来,自己split吧2 类似 content = open("xxx.log").read(); lines = content.split("\r\n"); On 24/10/06, Davies Liu <davies.liu at gmail.com> wrote: > 应该是EOL(End Of Line)吧? > > On 10/24/06, Neil <chenrong2003 at gmail.com> wrote: > > 我在使用 file 对象分析一个日志文件,默认的 > > > > for line in file > > 或者 readlines, xreadlines 都会把 \r 和 \r\n 都当作分行来切割。 > > 但是我需要的是准确的 \r\n 的分行方法(windows 的方式) > > 请问有没有办法在读取文件时修改 EOF 的定义? > > _______________________________________________ > > python-chinese > > Post: send python-chinese at lists.python.cn > > Subscribe: send subscribe to python-chinese-request at lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > -- > Davies Liu > My Blog: http://blog.daviesliu.net/ > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese
2006年10月24日 星期二 13:42
Davies Liu, 对的。是这个意思。 spring lee, 我目前是用了这个办法了。但总觉得性能可能不好,如果文件很大,则不能充分利用 xreadlines 边读边处理的优势。所以我在想:有没有一种办法可以覆盖 file.xreadlines 的默认行为来解决?
2006年10月24日 星期二 14:02
On 10/24/06, Neil <chenrong2003在gmail.com> wrote: > > Davies Liu, ¶ÔµÄ¡£ÊÇÕâ¸öÒâ˼¡£ > spring lee, ÎÒÄ¿Ç°ÊÇÓÃÁËÕâ¸ö°ì·¨ÁË¡£µ«×ܾõµÃÐÔÄÜ¿ÉÄܲ»ºÃ£¬Èç¹ûÎļþºÜ´ó£¬Ôò²»Äܳä·ÖÀûÓà xreadlines > ±ß¶Á±ß´¦ÀíµÄÓÅÊÆ¡£ËùÒÔÎÒÔÚÏ룺ÓÐûÓÐÒ»ÖÖ°ì·¨¿ÉÒÔ¸²¸Ç file.xreadlines µÄĬÈÏÐÐΪÀ´½â¾ö£¿ > os.linesep ¿ÉÒÔ»ñµÃµ±Ç°Æ½Ì¨µÄ EOL, ÊÇ·ñ¿ÉÒÔ×Ô¼ºÉèÖÃ, Äã¿ÉÒÔ×Ô¼º²âÊÔһϠfile.xreadlines ÒѾdepreciated, ½¨ÒéÓà "for line in file" ÏÂÃæÊÇ´ÓPython in a Nutshell ÀïÃæÕª³öÀ´µÄ, Ò²Ðí¶ÔÄãÓÐÓà The *mode* string may also have any of the values just explained followed by > a b or t. b denotes binary mode, while t denotes text mode. When the *mode > * string has neither b nor t, the default is text mode (i.e., 'r' is like 'rt', > 'w' is like 'wt', and so on). > > On Unix, there is no difference between binary and text modes. On Windows, > when a file is open in text mode, '\n' is returned each time the string > that is the value of os.linesep (the line termination string) is > encountered while the file is being read. Conversely, a copy of os.linesepis written each time you write > '\n' to the file. > > This widespread convention, originally developed in the C language, lets > you read and write text files on any platform without worrying about the > platform's line-separation conventions. However, except on Unix-like > platforms, you do have to know (and tell Python, by passing the proper * > mode* argument to open) whether a file is binary or text. In this chapter, > for simplicity, I use \n to refer to the line-termination string, but > remember that the string is in fact os.linesep in files on the filesystem, > translated to and from \n in memory only for files opened in text mode. > > Python also supports universal newlines, which let you open a text file > for reading in mode 'U' (or, equivalently, 'rU') when you don't know how > line separators are encoded in the file. This is useful, for example, when > you share text files across a network between machines with different > operating systems. Mode 'U' takes any of '\n', '\r', and '\r\n' as a line > separator, and translates any line separator to '\n'. > -- simple is good http://brucewang.net -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20061024/ab4f2240/attachment.html
2006年10月24日 星期二 23:03
Bruce Wang, 你好! 非常感谢你的建议。我去学习一下这方面的内容。
Zeuux © 2025
京ICP备05028076号