【问题标题】:Python readline reading incorrect \nPython readline 读取不正确\n
【发布时间】:2020-06-26 01:46:20
【问题描述】:

我正在尝试处理一堆文件;我的测试集是 50 个文件;其中 47 个文件工作正常,但其中 3 个文件有一个奇怪的问题。一旦这个工作正常,我可以处理几千个其他文件。

我正在尝试创建一组更有用的文件;默认情况下,文件根据创建时间使用编号命名; “漂亮”的名字在第一行;它被一堆十六进制括起来,这对我来说是无用的;名称的开头始终为 0x80,名称末尾的字符始终为 0x00

with open(i, 'rb') as f:
    firstline = f.readline()
    #print(str(firstline))
    posBegin=128
    posEnd=firstline.find(hexNameEnd.encode(),posBegin + 1)

在其中一个文件中;打印第一行给出;

 ...x19\x01\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x19\x01\x00\x00\n

但在十六进制编辑器中查看该文件时,该位置仅显示 0A;我如何强制它只查找 Windows 行尾; 0D 0A?添加 newline='\r\n' 不起作用。

【问题讨论】:

  • 换行控制通用换行模式的工作方式(仅适用于文本模式)。

标签: python hex newline


【解决方案1】:

好吧,很明显我现在感觉很笨;我的问题是我使用的是 readline() 而不是 read()

with open(i, 'rb') as f:
    firstline = f.read(200)
    #print(str(firstline))
    posBegin=128
    posEnd=firstline.find(hexNameEnd.encode(),posBegin + 1)

因为名字总是在 0x80;并且名称不再是大约 30 个字符;我需要做的就是读取前 200 个字节。从那里获取我的数据。即使我得到一些非常长的名称,它们也应该很容易适应读取的字节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多