欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2022年05月10日 14:38:53   作者:XerCis  
這篇文章主要介紹了解決Python保存文件名太長OSError: [Errno 36] File name too lon問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

保存文件名太長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è)批量移動(dòng)文件的代碼!

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

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

import os
from shutil import move
path_list = os.listdir('./qi')
for path in path_list:
    path_list1 = os.listdir('./qi/'+path)
    for path1 in path_list1:
        path_list2 = os.listdir('./qi/'+path+'/'+path1)
        for img in path_list2:
            png_list = os.listdir('./qi/'+path+'/'+path1+'/'+img)
            for png in png_list:
                oldfile = os.path.join('./qi'+'/'+path+'/'+path1+'/'+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ī)我需要使用最大的路徑長度,這樣就不會(huì)出現(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 path1 in path_list1:
        path_list2 = os.listdir('./qi/'+path+'/'+path1)
        for img in path_list2:
            png_list = os.listdir('./qi/'+path+'/'+path1+'/'+img)
            for png in png_list:
                #獲得絕對路徑
                old_path = os.path.abspath('./qi'+'/'+path+'/'+path1+'/'+img+'/')
                new_path = os.path.abspath('./qi'+'/'+path+'/')
                #在絕對路徑前加料,就可以識(shí)別了
                oldfile = os.path.join('\\\?\\'+old_path,png)
                newfile = os.path.join('\\\?\\'+new_path,png)
                move(oldfile,newfile)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微軟開源最強(qiáng)Python自動(dòng)化神器Playwright(不用寫一行代碼)

    微軟開源最強(qiáng)Python自動(dòng)化神器Playwright(不用寫一行代碼)

    這篇文章主要介紹了微軟開源最強(qiáng)Python自動(dòng)化神器Playwright(不用寫一行代碼),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python模擬簡易版淘寶客服機(jī)器人的示例代碼

    Python模擬簡易版淘寶客服機(jī)器人的示例代碼

    這篇文章主要介紹了Python模擬簡易版淘寶客服機(jī)器人的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • django基于存儲(chǔ)在前端的token用戶認(rèn)證解析

    django基于存儲(chǔ)在前端的token用戶認(rèn)證解析

    這篇文章主要介紹了django基于存儲(chǔ)在前端的token用戶認(rèn)證解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Android分包MultiDex策略詳解

    Android分包MultiDex策略詳解

    這篇文章主要介紹了Android分包MultiDex策略詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • python字符串替換re.sub()實(shí)例解析

    python字符串替換re.sub()實(shí)例解析

    這篇文章主要介紹了python字符串替換re.sub()實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python獲取操作系統(tǒng)的三種方法

    Python獲取操作系統(tǒng)的三種方法

    在Python中,?如何獲取操作系統(tǒng)的類型、名稱、版本等信息,本文就來介紹三種獲取方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • python軟件測試Jmeter性能測試JDBC Request(結(jié)合數(shù)據(jù)庫)的使用詳解

    python軟件測試Jmeter性能測試JDBC Request(結(jié)合數(shù)據(jù)庫)的使用詳解

    這篇文章主要介紹了python軟件測試Jmeter性能測試JDBC Request(結(jié)合數(shù)據(jù)庫)的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python的字典和集合你了解嗎

    python的字典和集合你了解嗎

    章主要為大家詳細(xì)介紹了python的字典和集合,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • python庫構(gòu)建之pyproject.toml配置文件詳解

    python庫構(gòu)建之pyproject.toml配置文件詳解

    pyproject.toml是Python項(xiàng)目標(biāo)準(zhǔn)化配置文件,由PEP?518引入,用于定義構(gòu)建系統(tǒng)、項(xiàng)目元數(shù)據(jù)和依賴管理,它替代了傳統(tǒng)的setup.cfg文件,通過指定構(gòu)建工具如setuptools或poetry,管理項(xiàng)目依賴,配置工具行為等,需要的朋友可以參考下
    2024-09-09
  • Python PaddlePaddle機(jī)器學(xué)習(xí)之求解線性模型

    Python PaddlePaddle機(jī)器學(xué)習(xí)之求解線性模型

    這篇文章主要介紹了Python PaddlePaddle機(jī)器學(xué)習(xí)之求解線性模型,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08

最新評論