Python论坛  - 讨论区

标题:[python-chinese] CPython 中有没有办法重定义 EOF

2006年10月24日 星期二 11:53

Neil chenrong2003在gmail.com
星期二 十月 24 11:53:22 HKT 2006

我在使用 file 对象分析一个日志文件,默认的

for line in file
或者 readlines, xreadlines 都会把 \r 和 \r\n 都当作分行来切割。
但是我需要的是准确的 \r\n 的分行方法(windows 的方式)
请问有没有办法在读取文件时修改 EOF 的定义?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年10月24日 星期二 11:54

Neil chenrong2003在gmail.com
星期二 十月 24 11:54:39 HKT 2006

因为我知道在 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 的定义?
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年10月24日 星期二 11:58

Neil chenrong2003在gmail.com
星期二 十月 24 11:58:13 HKT 2006

我搞错了,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 的定义?
> >
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年10月24日 星期二 13:11

Davies Liu davies.liu在gmail.com
星期二 十月 24 13:11:23 HKT 2006

应该是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/

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年10月24日 星期二 13:25

spring lee ncepu.lyc在gmail.com
星期二 十月 24 13:25:28 HKT 2006

先用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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年10月24日 星期二 13:42

Neil chenrong2003在gmail.com
星期二 十月 24 13:42:54 HKT 2006

Davies Liu, 对的。是这个意思。
spring lee, 我目前是用了这个办法了。但总觉得性能可能不好,如果文件很大,则不能充分利用 xreadlines
边读边处理的优势。所以我在想:有没有一种办法可以覆盖 file.xreadlines 的默认行为来解决?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年10月24日 星期二 14:02

Bruce Wang number5在gmail.com
星期二 十月 24 14:02:23 HKT 2006

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 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年10月24日 星期二 23:03

Neil chenrong2003在gmail.com
星期二 十月 24 23:03:56 HKT 2006

Bruce Wang, 你好!
非常感谢你的建议。我去学习一下这方面的内容。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号