溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python保存文件名太長怎么解決

發(fā)布時(shí)間:2022-05-10 16:22:18 來源:億速云 閱讀:972 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“Python保存文件名太長怎么解決”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python保存文件名太長怎么解決”吧!

保存文件名太長OSError: [Errno 36] File name too lon

問題描述

安裝

pip install python-docx

代碼

from docx import Document
Document().save('{}.docx'.format('1' * 256))

報(bào)錯(cuò) OSError: [Errno 36] File name too long

解決方案

Linux 和 Windows 文件名限制約為 255 個(gè)字符

def shorten_filename(filename, limit=100):
    """返回合適長度文件名,中間用...顯示"""
    if len(filename) <= limit:
        return filename
    else:
        return filename[:int(limit / 2) - 3] + '...' + filename[len(filename) - int(limit / 2):]
filename = '{}.txt'.format('Lorem ipsum dolor sit amet, consectetur adipiscing elit' * 30)
print(filename)
print(shorten_filename(filename))
# Lorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elit.txt
# Lorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum do...ipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elitLorem ipsum dolor sit amet, consectetur adipiscing elit.txt

Python超長文件名解決

今天用python,寫一個(gè)批量移動文件的代碼!

Python保存文件名太長怎么解決

Python保存文件名太長怎么解決

Python保存文件名太長怎么解決

大家看到了,將近900個(gè)項(xiàng)目,好幾層的目錄,一個(gè)項(xiàng)目一下面有50幾張的照片,要把這些照片集中移動到第一層的目錄下面。

最初我的代碼是這樣寫的:

import os
from shutil import move
path_list = os.listdir('./qi')
for path in path_list:
    path_list1 = os.listdir('./qi/'+path)
    for path2 in path_list1:
        path_list2 = os.listdir('./qi/'+path+'/'+path2)
        for img in path_list2:
            png_list = os.listdir('./qi/'+path+'/'+path2+'/'+img)
            for png in png_list:
                oldfile = os.path.join('./qi'+'/'+path+'/'+path2+'/'+img+'/',png)
                newfile = os.path.join('./qi'+'/'+path+'/',png)
                move(oldfile,newfile)

目錄有好幾個(gè)層級,前面的 for 循環(huán)就不細(xì)述,感覺代碼都沒錯(cuò)。

運(yùn)行后總是報(bào)錯(cuò),F(xiàn)ileNotFoundError: [WinError 3] 系統(tǒng)找不到指定的路徑。

后面發(fā)現(xiàn)是文件名超過255位造成的。

最后的解決方法是將相對路徑改為絕對路徑,并在路徑前方加上“\\?\”。

找了前輩的文章,摘要如下:

  • 這個(gè)解決方法是想辦法告訴電腦我的路徑長度很長。首先我查詢了windows下文件路徑的最大長度是多少,查到的結(jié)果是260.這對于絕大多數(shù)情況都足夠用了,但是文件路徑長的問題還是存在的。

  • 然后就看到了UNC的定義,原來windows下的文件路徑的長度最大可以是3萬多的長度,具體多少記不清了哈哈哈。

  • 只要在絕對路徑的前面加上“\\?\”就能告訴計(jì)算機(jī)我需要使用最大的路徑長度,這樣就不會出現(xiàn)路徑太長而導(dǎo)致的無法操作的問題了。

怎么加“\\?\”這里沒有說太清楚了

試了好幾次,發(fā)現(xiàn)要加好多個(gè)\總算得到結(jié)果,代碼如下供參考:

import os
from shutil import move
path_list = os.listdir('./qi')
#幾次循環(huán),獲得藏在最底層目錄的文件名
for path in path_list:
    path_list1 = os.listdir('./qi/'+path)
    for path2 in path_list1:
        path_list2 = os.listdir('./qi/'+path+'/'+path2)
        for img in path_list2:
            png_list = os.listdir('./qi/'+path+'/'+path2+'/'+img)
            for png in png_list:
                #獲得絕對路徑
                old_path = os.path.abspath('./qi'+'/'+path+'/'+path2+'/'+img+'/')
                new_path = os.path.abspath('./qi'+'/'+path+'/')
                #在絕對路徑前加料,就可以識別了
                oldfile = os.path.join('\\\?\\'+old_path,png)
                newfile = os.path.join('\\\?\\'+new_path,png)
                move(oldfile,newfile)

感謝各位的閱讀,以上就是“Python保存文件名太長怎么解決”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Python保存文件名太長怎么解決這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI