Я написал сценарий, чтобы стереть данное слово из файлов 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 также не будет проверять элементы подпапки_ - означает ли это, что фактическая обработка docx не имеет значения. Можете ли вы обрезать этот образец до чего-то маленького, что все еще не удается, но не дает нам напряжения глаз ?! – tdelaney
'os.walk' ходит по дереву, поэтому вам, скорее всего, не понадобится' для subDirs in dirs: ', который просто выполняет второй тур по подкаталогам. – tdelaney
'dirs' будет строкой, текущим каталогом, поэтому вы выполняете итерацию по отдельным символам в строке, когда вы делаете' для subDirs in dirs'. –