Попробуйте / Except в Python, чтобы показать, какой файл выдал ошибку - PullRequest
0 голосов
/ 02 июля 2018

Я пишу py, чтобы импортировать большое количество файлов, манипулировать ими и затем выводить в .csv. Это что-то вроде пирога в Пандах, однако я не контролирую поступающие файлы, поэтому я пытаюсь написать сценарий, чтобы исключение касалось обработки файлов, поступающих «неправильным» образом.

Во всяком случае, я использую Try / Except, чтобы показать пользователю, что в одном из файлов есть KeyError (по сути, в ячейке, когда тип данных имеет тип int).

Мой вопрос: есть ли способ получить , кроме: , чтобы вернуть имя файла, вызвавшего ошибку ??

for csv in csvList:
        df = pd.read_csv(csv, header=0, skip_blank_lines=True, skipinitialspace=True)\
            .dropna(how='all')

        try:
            df[0] = df[0].astype(int)
            df[1] = df[1].astype(int)
            df[2] = df[2].astype(int)
            df[3] = df[3].astype(int)

            report_path = 'UPC_Ready_for_Import'
            if not os.path.exists(report_path):
                os.makedirs(report_path)

            df.to_csv(os.path.join(report_path, csv + '_import.csv'), index=False)

        except KeyError:
            print('Error within file, please review files')

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Предполагается, что csvList содержит список путей к входным файлам:

for csv in csvList:
    ....
    try:
        ...
    except KeyError:
         print('Error within file {}, please review files'.format(csv))
0 голосов
/ 02 июля 2018

Вы могли бы написать, что-то вроде этого, я думаю:

for csv in csvList:
        df = pd.read_csv(csv, header=0, skip_blank_lines=True, skipinitialspace=True)\
            .dropna(how='all')

        try:
            df[0] = df[0].astype(int)
            df[1] = df[1].astype(int)
            df[2] = df[2].astype(int)
            df[3] = df[3].astype(int)

            report_path = 'UPC_Ready_for_Import'
            if not os.path.exists(report_path):
                os.makedirs(report_path)

            file_name = os.path.join(report_path, csv + '_import.csv')
            df.to_csv(file_name, index=False)

        except KeyError:
            print('Error within file', file_name ', please review files')

Основная идея - сохранить имя файла в переменной имя_файла и использовать его в блоке исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...