开发者社区 问答 正文

OSError: [Errno 36] File name too long

云端部署的stable diffusion 不管是文生图还是图生图只要带上生成关键词比如这样:QQ图片20230712161522.png
60
就会提示:QQ图片20230712161626.png
能不能具体提供一下解决方法!!!感谢!!!!

展开
收起
游客cjd4ktiirubwm 2023-07-12 16:17:47 547 分享 版权
1 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    使用哈希值对文件名做截断处理
    可以通过计算文件的内容哈希值,生成一个固定长度的哈希字符串来替代文件名。

    例如:

    python
    Copy
    import hashlib

    def hash_filename(filename):
    hash_func = hashlib.md5() # 也可以选择 sha1 等算法
    with open(filename, "rb") as f:
    for chunk in iter(lambda: f.read(4096), b""):
    hash_func.update(chunk)
    return hash_func.hexdigest()

    input_filename = 'Very long file name that will cause error.jpg'
    output_filename = hash_filename(input_filename)[:8] + '.jpg'

    output_filename 为哈希字符串对应的文件名

    通过截断哈希字符串,可以获得一个固定长度的文件名,避免错误。

    使用 UUID 生成唯一短文件名
    python
    Copy
    import uuid

    filename = 'Very long file name that will cause error.jpg'
    short_filename = str(uuid.uuid4())[:8] + '.jpg'
    UUID 生成的字符串默认长度为32,取前8个字符即获得一个短文件名。

    2023-07-12 19:11:05
    赞同 展开评论
问答地址: