我有很多xml檔案,它們的名字是這樣的:
First_ExampleXML_Only_This_Should_Be_Name_20211234567.xml
第二篇_示例XML_OnlyThisShouldBeName_202156789.xml
Third_ExampleXML_Only_This_Should_Be_Name1_2021445678.xml
第四_ExampleXML_Only_This_Should_Be_Name2_20214567.xml
我必須做一個腳本,它將瀏覽所有的檔案并重命名它們,所以例子中只剩下這個:
我必須做一個腳本,它將瀏覽所有的檔案并重命名它們。
Only_This_Should_Be_Name.xml
OnlyThisShouldBeName.xml
只有這個名字1xml
Only_This_Should_Be_Name2.xml
目前我有這樣的東西,但真的很難得到我所需要的東西,我猜想必須從第二個_算起,直到_202,并采取之間的一切。
fnames = listdir('. ' )
for fname in fnames:
# 替換. xml with type of file 你希望這個to有影響on。
if fname.endswith('.xml)。
有誰知道什么是最好的方法嗎?
uj5u.com熱心網友回復:
這里有兩個問題:
在目錄中尋找一種檔案。雖然listdir會起作用,但你也可以把它們球化。
from pathlib import Path
for fn in Path("/path"/span>).glob("*.xml"/span>)
....
重新命名檔案
在這種情況下,你的檔案被命名為 "file_name_NUMBERS.xml",我們想把這些數字剝離出來,所以我們將使用一個重合詞:import re
from pathlib import Path
for fn in Path("dir").glob("*.xml") 。
new_name = re.search(r"(.*?)_[0-9] ", fn.stem).group(1)
fn.rename(fn.with_name(new_name ".xml")
注意,你可以在沒有pathlib的情況下完成這一切,但你問的是最好的方法;)
最后,為了回答一個隱含的問題,沒有什么能阻止你把所有這些都包裝在一個函式中,并為不同型別的檔案傳遞一個引數給 glob。
uj5u.com熱心網友回復:
你可以通過對所有的xml檔案用下劃線分割來剝離內容,并用串列中的第一個值來重命名,如下所示。
import os
fnames = os.listdir('. ' )
for fname in fnames。
# 將.xml替換為你希望這個影響的檔案型別
if fname.endwith('.xml')。
newName = fname.split("_")
os.rename(fname, newName[1] " .xml")
else:
繼續。
在這里,你正在消除"_"之前和之后的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/333344.html
標籤:
下一篇:python:指數的特殊方法?
