【问题标题】:Windows vs. Linux Text File ReadingWindows vs. Linux 文本文件读取
【发布时间】:2017-01-31 02:47:40
【问题描述】:

这就是问题所在,我最近从 Windows 切换到 Ubuntu,我的一些用于分析数据文件的 python 脚本给了我错误,我不确定如何正确解决。

我当前仪器的数据文件输出如下内容:

[标题]

各种信息w.r.t仪器等

[数据]

状态、代码、温度、字段等......

0,0,300、0.013 等...

所以基本上,这段代码的 sn-p 旨在读取数据文件并解析从 [Header] 到 [Data] 的所有信息,并开始在适当的行读取真实数据,而不管标题如何排列因为不同的乐器有不同的标题。

f = open('file.dat')
lines = f.readlines()
i = 0
while (lines[i]!="[Data]\n"):
    i+=1
i = i + 2

此代码在 Windows 中运行良好,但在 Ubuntu 中,i 的值始终采用特定数据文件中的总行数。所以我知道问题是“[Data]\n”行的处理。感谢您的帮助。

【问题讨论】:

  • 我在 linux (ubuntu 16.04) 中使用 python 2.7 和 python 3.5 尝试了上面的代码,并且都有效。也许您的 linux 机器的代码中有错字?

标签: python linux windows


【解决方案1】:

如果您以默认文本模式打开文件,则在 Windows 上,\r\n 会在读取时转换为 \n。在 Linux 上,这不会发生。您的数据文件可能有 \r\n,尤其是在 Windows 上创建时。改用通用换行模式:

open(filename, 'rU')

【讨论】:

  • 旁注:在 Python 3 上(或在 Python 2 上使用 io.open,这是 Python 3 内置 open 函数的后向端口),通用换行模式是默认的(它是通过为newline 参数提供显式值来关闭)。模式字符串中的U 用于 Python 2,在 Py3 中已弃用。
  • 完美运行。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多