探究Linux支持最長文件名是255字節還是255字符


最近在使用Python 的wget包下載文件時遭遇了OSError: filename too long的異常,經檢查下載的文件名確實很長,於是去查詢Linux x86_64架構下最長文件名支持是多少。

中提到Linux單目錄名支持最大255個字符,全路徑支持4096,但出問題的文件名稱才九十多個字符。於是寫了一個Python腳本驗證一下:

import os

if __name__ == '__main__':
    addname = ''
    basename = ''
    while True:
        basename += addname
        try:
            with open(basename, 'w') as f:
                os.remove(basename)
        except Exception as e:
            print('length %d failed' % len(basename))
            break

輸出為86,並不是256。而考慮到大多數漢字的utf-8編碼一般占3字節,顯然Linux對目錄名長度255的限制是字節數而不是字符數。出問題的文件名因為含有大量中日文,其用bytes(str, encode='utf-8')轉換為字節格式后長度已經超過255,嘗試將文件名刪減到255字節以下后成功保存。

結論:x86_64 Linux下文件名最長為255個字節,具體是多少個字符要看字符的utf-8編碼,一般英文會比較長,中文和特殊符號等等比較短。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM