You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pycdlib创建带.txt后缀的ISO9660合规文件名?

解决pycdlib创建带.txt后缀ISO9660合规文件名的问题

问题原因

ISO9660 Level 1(pycdlib默认兼容模式)的文件名规则非常严格:

  • 仅允许大写字母A-Z、数字0-9、下划线_
  • 必须遵循8.3格式(主名最多8字符,后缀最多3字符)
  • 文件名末尾需带版本号(格式为;数字,通常用;1)

直接写/FOO.txt会触发报错,因为小写字母不符合规则,且未遵循标准格式。

解决方案1:严格遵循ISO9660 Level 1规范

将文件名改为大写的/FOO.TXT;1,完全符合8.3格式与字符要求:

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

import pycdlib

iso = pycdlib.PyCdlib()
iso.new()

foostr = b'foo\n'
# 修改为合规的ISO9660文件名
iso.add_fp(BytesIO(foostr), len(foostr), '/FOO.TXT;1')

iso.add_directory('/DIR1')

iso.write('new.iso')
iso.close()

生成的ISO在所有支持ISO9660的系统中都会显示为FOO.TXT(多数系统会自动隐藏版本号;1)。

解决方案2:启用Rock Ridge扩展支持小写/长文件名

如果需要保留小写的.txt后缀或更长的文件名,可以启用Rock Ridge扩展(兼容Linux、macOS等现代系统,同时对传统系统保留ISO9660短文件名):

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

import pycdlib

iso = pycdlib.PyCdlib()
# 创建ISO时启用Rock Ridge 1.09扩展
iso.new(rockridge='1.09')

foostr = b'foo\n'
# 指定Rock Ridge长文件名(小写.txt),同时指定ISO9660兼容短文件名
iso.add_fp(BytesIO(foostr), len(foostr), '/FOO.TXT;1', rr_name='/foo.txt')

iso.add_directory('/DIR1', rr_name='/dir1')

iso.write('new_rockridge.iso')
iso.close()
  • rr_name参数用于指定Rock Ridge扩展的长文件名(支持小写、更长的命名规则)
  • 传统系统会显示FOO.TXT,支持Rock Ridge的系统会显示foo.txt

内容的提问来源于stack exchange,提问作者J'e

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:20:48