我已經寫了一個腳本來從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'中的子目錄執行時,您正在迭代字符串中的單個字符。 –