我已经写了一个脚本来从docx文件中删除给定的单词,并且在我的最后一个检查子文件夹项目的障碍。有人能帮我弄清楚我在执行中失败的地方吗?它适用于同一目录中的所有文件,但它现在也不会检查子文件夹项目。谢谢你的帮助。遍历子文件夹文件?
#!/usr/bin/env python3
# Search and Replace all docx
import os, docx
from docx import Document
findText = input("Type text to replace: ")
#replaceText = input('What text would you like to replace it with: ')
for dirs, folders, files in os.walk('.'):
for subDirs in dirs:
print('The Sub is ' + subDirs)
for fileNames in files:
print(subDirs + fileNames)
if fileNames.endswith('.docx'):
newDirName = os.path.abspath(subDirs)
fileLocation = subDirs + '\\' + fileNames
document = docx.Document(fileLocation)
print('Document is:' + fileLocation)
tables = document.tables
for table in tables:
for row in table.rows:
for cell in row.cells:
for paragraph in cell.paragraphs:
if findText in paragraph.text:
inline = paragraph.runs
for i in range(len(inline)):
if findText in inline[i].text:
text = inline[i].text.replace(findText, '')
inline[i].text = text
for paragraph in document.paragraphs:
if findText in paragraph.text:
inline = paragraph.runs
for i in range(len(inline)):
if findText in inline[i].text:
text = inline[i].text.replace(findText, '')
inline[i].text = text
document.save(fileLocation)
你说_it不会也检查子文件夹items_ - 这是否意味着实际的docx处理是不相关的。你能把这个样本修剪成一些仍然失败但不会让我们眼睛疲劳的东西吗?! – tdelaney
'os.walk'走树,所以你可能不需要为子目录中的子目录:'它只是对子目录进行第二次浏览。 – tdelaney
'dirs'将是一个字符串,即当前目录,因此当您为'dirs'中的子目录执行时,您正在迭代字符串中的单个字符。 –