Как читать csv с пандами в каталоге tmp в aws лямбда - PullRequest
1 голос
/ 03 июня 2019

Я пишу лямбду, чтобы прочитать некоторые данные из csv в фрейм данных, манипулировать этими данными, затем преобразовать их обратно в csv и сделать вызов API с новым csv все на лямбда-Python.

Я столкнулся с проблемой с помощью команды pandas.read_csv. Это завершает выполнение моего триггера лямбда без ошибок.

os.chdir('/tmp')
for root, dirs, files in os.walk('/tmp', topdown=True):
    for name in files:
        if '.csv' in name:
            testdic[name] = root
            print(os.path.isfile('/tmp/' + name))
            print(os.path.isfile(name))
            df = pd.read_csv(name)
            df = pd.read_csv('/tmp/' + name)

Оба файла os.path.isfile возвращают true, и я пробовал обе версии read_csv, обе не работают и преждевременно заканчивают лямбду без ошибок.

Я подтвердил, что csv загружен в директорию lambda tmp, я могу читать и распечатывать строки csv в tmp. Однако, когда я запускаю = pd.read_csv ('/ tmp / file.csv') или меняю каталог на / tmp и выполняю = pd.read_csv ('file.csv'), он завершает лямбда без ошибок и не пропускает это указать в коде. Я использую панды 0.23.4, поскольку это то, что мне нужно, и код работает локально. Любые предложения будут полезны

Ожидаемые результаты должны быть считаны csv в кадре данных, чтобы я мог манипулировать им.

ИСПРАВЛЕНО: Невозможно просто использовать «/ tmp /» + имя файла. Пришлось использовать os.path.join (root, filename), также пришлось увеличить время ожидания моей лямбды из-за размера файла.

1 Ответ

1 голос
/ 06 июня 2019

os.path.join - работает для разных платформ

Использование

file_path = os.path.join(root, name)

, а затем

pd.read_csv(file_path)

ПРИМЕЧАНИЕ. Увеличьте лямбда-тайм-аут AWS, как указано в комментариях @Gabe Maurer

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