如何使用Python写入ISO文件?

4
如果我想要插入一个类似于字节的对象
bazstr = b'bazzzzzz\n' 

我该如何在Python中将文件制作成ISO格式?

 f=open("/Users/root/Downloads/archlinux-2019.08.01-x86_64.iso",'w+')
 f.buffer.raw.read()  

这使用了太多的内存,几乎导致了系统冻结。

f.buffer.raw.readline('''any number''')
f.buffer.readline('''any number''') 
f.readline('''any number''')   
# All returned no bytes
f.read(#)
f=open("/Users/root/Downloads/archlinux-2019.08.01-x86_64.iso",'rb')
#returns bytes but but doesn't allow searching through the iso in a meaningful way.

我不仅想打开字节块,我希望使用Python打开ISO文件系统,在文件中浏览、编辑一些文件,然后得到一个未被破坏的镜像。


那么问题似乎没有任何尝试来解决问题。请编辑问题以展示您已经尝试过的内容,并显示您遇到的具体障碍,包括最小、完整和可验证示例。有关更多信息,请参见提问的智慧 - Andreas
2个回答

4

在我创建这个问题的时候,我找到了答案。 主要 Git 这个Python库具有ISO写入功能。这正是我所需要的。 完整文档示例

try:
    from cStringIO import StringIO as BytesIO
except ImportError:
    from io import BytesIO

import pycdlib

iso = pycdlib.PyCdlib()
iso.new()
foostr = b'foo\n'
iso.add_fp(BytesIO(foostr), len(foostr), '/FOO.;1')
outiso = BytesIO()
iso.write_fp(outiso)
iso.close()

iso.open_fp(outiso)

bazstr = b'bazzzzzz\n'
iso.modify_file_in_place(BytesIO(bazstr), len(bazstr), '/FOO.;1')

modifiediso = BytesIO()
iso.write_fp(modifiediso)
iso.close()

1
我没有找到直接编辑ISO文件的解决方案。你可以将它提取到“/tmp”中,然后放置要编辑的文件,然后可以使用下面的命令创建带有刚刚创建的编辑文件的ISO文件。
要制作ISO文件,可以使用“subprocess”(例如“mkisofs”)。
示例:
os.system('mkisofs -o edited.iso /tmp ')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接