我具有使用Python脚本在Windows 10中试图满足的以下要求:
递归地将多个文件夹中的所有文件名更改为小写。为此,我使用了以下代码:
import os path = "C://Users//shilpa//Desktop//content"
for dir,subdir,listfilename in os.walk(path):
for filename in listfilename:
new_filename = filename.lower()
src = os.path.join(dir, filename)
dst = os.path.join(dir, new_filename)
os.rename(src,dst)
更新这些嵌入特定标记的文件的引用。这里的标签是<img href=(filename.png)>
。在这里,<img href=>
是常数,文件名filename.png是不同的。
所以,这是示例:
现有文件名:
ABC.dita
XYZ.dita
IMG.PNG
这些在不同的文件中引用,例如IMG.PNG
中引用了XYZ.dita
。
在第一步之后,这些更改如下:
abc.dita
xyz.dita
img.png
这将破坏包含在不同文件中的所有引用。
我想更新所有更改的文件名引用,以使链接保持不变。
我对Python和初学者没有任何经验。要实现第二步,我应该能够使用正则表达式并找到一种模式,说,
<img href="(this will be a link to the IMG.PNG>"
。这将是.dita
文件的一部分。
在步骤1之后,文件中的引用将中断。
如何更改文件名并保留其引用?这里的问题是,在所有文件中查找并用新名称替换旧名称。
感谢您的任何帮助。
一旦有了引用文件的数据,就可以使用此代码来降低引用字符串:
s = """<tag1><tag2><img href="AFDDFD.ADF"></tag2><tag3><img href="SDGSFVSF.vsfv"></tag3></tag1>"""
start = 0
head = "<img href="
tail = ">"
while start != -1:
head = "<img href="
img_start = s.find(head, start)
if img_start == -1:
break
img_end = s.find(">", img_start)
s = s[:img_start] +s[img_start:img_end].lower() + s[img_end:]
start = img_end
或者,您可以使用一些XML解析模块。例如BeautifulSoup,这将有助于避免类似href=
与href =
from bs4 import BeautifulSoup as bs
s = """<tag1><tag2><img href="AFDDFD.ADF"></tag2><tag3><img href="SDGSFVSF.vsfv"></tag3></tag1>"""
s = bs(s)
imgs = s.find_all("img")
for i in imgs:
if "href" in i.attrs:
i.attrs["href"] = i.attrs["href"].lower()
s = str(s)
两种方式都可以重写文件。