从文件中读取一行并将其拆分 - python
我只有一行数据的文件(接近3 MB)我需要将它分成更小的行并将输出写入新文件。从文件中读取一行并将其拆分 - python
为如:
sample.txt的 - 文件 434D012000100009362D00000000069E0F0007000000DA434D01030010010003008000000000000000000000009C434D01200010000 ....等等
我想整条生产线分割成每每23个字节较细的线条。 即如何得到写一个python脚本告诉这么多字符后破
谢谢。
阅读23个字节块的文件:
from functools import partial
with open('sample.txt', 'rb') as inputfile, open(outputfilename, 'wb') as output:
for chunk in iter(partial(inputfile.read, 23), ''):
# chunk is 23 bytes small
output.write(chunk + '\n')
这里我们使用iter()
function与定点遍历一个函数,直到函数返回''
,空字符串。我们循环的功能是使用functools.partial()
每次和每次调用参数23调用inputfile.read()
。您可以使用lambda(lambda: inputfile.read(23)
),但partial()
更快。
我不能告诉如果文件实际上是十六进制的(在这种情况下,OP可能需要46个字符的行,或者前16个字节的值)。名称'sample.txt'让我觉得它可能是* hex *,但是。 – DSM 2013-04-22 20:40:06
@DSM:该帖子显示'23字节',而不是'23个字符'。 – 2013-04-22 20:42:01
Martijn - 这是在十六进制谢谢:) – 2013-04-22 20:43:31
使用函数作为生成器。我很喜欢array-module。
def bytesfromfile(f):
while True:
raw = array.array('c')
raw.fromstring(f.read(23))
if not raw:
break
yield raw
使用'c'
将这些值解释为字符。 'B'
作为无符号字符,即0-255。
您一次只能读取23个字节,然后将其输出到另一个文件,并在末尾换行。不是火箭科学。 – Cairnarvon 2013-04-22 20:33:22
你想使用python的任何特定原因?不是说这是不可能的,只是有一个方便的POSIX命令可以为你做到这一点... – 2013-04-22 20:33:51
'人分裂'是你的朋友的非python解决方案... – 2013-04-22 20:34:24