Рекурсивно заменить строку в каталоге файлов Excel - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь заменить каждое вхождение данной строки другой строкой в ​​каталоге файлов Excel.

for (root, dirs, files) in os.walk(DIRECTORY):
    for file in files:
        if file.endswith(".xlsx"):
            path = os.path.join(root, file)
            print("Opening: " + path)
            wb = openpyxl.load_workbook(path)
            for ws in wb.worksheets:
                for row in ws.iter_rows():
                    for cell in row:
                        print(cell.value)
                        if cell.value == target:
                            print("TARGET STRING FOUND")
                            cell.value = replace
                wb.save(wb)

Я получаю AttributeError: 'list' object has no attribute 'endswith' при запуске сценария.

Спасибо за любую помощь

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

os.walk не возвращает последовательность файлов. Это дает (root, dirs, файлы).

for (root, dirs, files) in os.walk(directory):
    for name in files:
        if name.endswith(".xlsx"):
            path = os.path.join(root, name)
            # the rest of your code here
0 голосов
/ 07 ноября 2019

Попробуйте это

basepath="directory_path"
files = list(filter(lambda x: '.xlsx' in x, os.listdir(basepath)))
for file in files:
    wb = openpyxl.load_workbook(f"{basepath}/file")
    for sheet in wb.worksheets:
        for cell in sheet.iter_rows('C{}:C{}'.format(sheet.min_row,sheet.max_row)):
            print(cell + "\n")
            if cell.value == target:
                cell.value = replace
...