#python
Вопрос:
Я хочу проверить нулевые значения в файлах Excel, где есть много вложенных папок. Я написал код на python для проверки нулевых значений в файлах excel в каждой папке, и код работал нормально, но мне нужно упростить код.
import os ,uuidtre
import numpy as np
import pandas as pd
import logging
path =r"C:UsersDocumentspythonEmp"
files = os.listdir(path)
for filename in files:
pathchild=path '\' filename
file = os.listdir(pathchild)
files_xls = [f for f in file if f[-4:]== 'xlsx' ]
child_folders= [f for f in file if f[-4:]!= 'xlsx']
for f1 in files_xls:
filepath=pathchild '\' f1
df = pd.read_excel(filepath, engine='openpyxl')
count_nan = df.isnull().sum().sum()
logging.basicConfig(filename='nanTest.log', level=logging.INFO,format='%(message)s')
if count_nan ==0:
none=' No none value in the excel file'
else:
none=' There is none values founded in the excel file'
output='File name: ' f1, 'File path: ' filepath, none
logging.info(output)
for f2 in child_folders:
patha=pathchild '\' f2
file1 = os.listdir(patha)
files_xls1 = [f for f in file1 if f[-4:]== 'xlsx']
for f3 in files_xls1:
filechildpath=patha '\' f3
df = pd.read_excel(filechildpath, engine='openpyxl')
count_nan = df.isnull().sum().sum()
if count_nan ==0:
none=' No none value in the excel file'
else:
none=' There is none values founded in the excel file'
output='File name: ' f3,'File path: ' filepath, none
logging.info(output)
Комментарии:
1. Для правильной работы кода, который нуждается в улучшении стиля/производительности, посмотрите на публикацию этого в Обзоре кода на стороне партнера. Это еще один сайт в сети stack exchange, который более подходит для подобных вопросов.
2. Шаг 1. Соберите код, который проверяет наличие нулевых значений в одной электронной таблице, и оберните его в функцию. Протестируйте его с помощью одной электронной таблицы. Шаг 2. Напишите или найдите код для сканирования иерархии папок и поиска электронных таблиц. Шаг 3: Соедините их вместе.
3. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.