我有一个读取二进制文件的代码:
n = 820
with open('/home/drdos/work/PTSIBS01.PDA', "rb") as f:
while True:
data = f.read(n)
if not data:
break
filename = str(data[3:18])
x = open(filename, 'wb').write(data)
但我的问题是我正在尝试迭代和划分的文件,正如您在 c0de 上看到的那样,在名称上包含双斜杠(“//”),如下所示:
07112011142635//TS
程序只运行 2 次,然后在创建 2 个文件后说:
drdos@poison:~/work$ python pybin.py
Traceback (most recent call last):
File "pybin.py", line 11, in <module>
x = open(filename, 'wb').write(data)
IOError: [Errno 2] No such file or directory: '12011142635//PT'
好吧,在简历中仅提供一个基本视图,我的代码存在以从该位二进制文件创建一个记录文件,并为每个 820 字节创建一个内容为 820 字节的文件和一个文件名,该文件是介于两者之间的字符串的确切副本3字节和18字节。
文件类型 = File.Dat 我需要提取每条记录每条记录 = 1 条记录等于:
Field | Format | name | len | description
1 array NR_UP 2 //
2 array Bla_N 16 ASCII coded i need for filename
3 Binary Array Sig 256 content
4 Binary Array Sig 270 content
5 Binary Array SigA 256 content
6 Hash Hash 20 Sha1
对于这样的每条记录,我都需要一个文件:) 并且对于所有 20Mb 的源代码(File.dat),但任何人都想更改我的原始代码或更好地了解如何执行此操作会很棒。