read_excel

Alexey123

Новичок
Пользователь
Авг 28, 2020
8
0
1
Есть папка, в которой находится файл .py. в эту периодически добавляются файлы .xlsx с названием в формате 'nameDDMMYYYY.xlsx', где 'name' - ростоянный, а 'DDMMYYYY' меняется. После добавления файла .xlsx запускается файл .py, который считывает файл .xlsx, проводит нужные манипуляции и переименовывает его. Далее в папку загружается следующий файл .xlsx и запускается файл .py. Необходимо настоить в файле .py read_excel таким образом чтобы он автоматически брал файл .xlsx, а не менять его вручную. Каким образом это можно сделать? Заранее благодарю!
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Либо получать список всех файлов в папке и выбирать нужный, либо передавать в скрипт имя файла параметром.
 

Alexey123

Новичок
Пользователь
Авг 28, 2020
8
0
1
Как можно передать параметр? Нужно чтобы брался файл .xlsx, который всегда начинается с 'name', потом идут какие-то цифры в формате DDMMYYYY (меняются!), в конце всегда '.xlsx'
 

Zaoza14

Новичок
Пользователь
Авг 28, 2020
6
0
1
Можно так:
CURRENT_DATE = input("Введите дату в формате DDMMYYYY: ")
потом перед read_excel делаем:
file = 'name' + CURRENT_DATE + '.xlsx'
и потом
read_excel(file,
header=0,
index_col=False,
keep_default_na=True)
 

Alexey123

Новичок
Пользователь
Авг 28, 2020
8
0
1
Либо получать список всех файлов в папке и выбирать нужный, либо передавать в скрипт имя файла параметром.


потом
Можно так:
CURRENT_DATE = input("Введите дату в формате DDMMYYYY: ")
потом перед read_excel делаем:
file = 'name' + CURRENT_DATE + '.xlsx'
и потом
read_excel(file,
header=0,
index_col=False,
keep_default_na=True)
Спасибо! Тут в ручную вводить надо будет DDMMYYYY, а нужно чтобы .py самостоятельно находил этот файл, т.е. просто запустил файл и он сам все сделал, это возможно сделать?
 

Alexey123

Новичок
Пользователь
Авг 28, 2020
8
0
1
Можно так:
CURRENT_DATE = input("Введите дату в формате DDMMYYYY: ")
потом перед read_excel делаем:
file = 'name' + CURRENT_DATE + '.xlsx'
и потом
read_excel(file,
header=0,
index_col=False,
keep_default_na=True)
Спасибо!
Тут в ручную вводить надо будет DDMMYYYY, а нужно чтобы .py самостоятельно находил этот файл, т.е. просто запустил файл и он сам все сделал, это возможно сделать?
 

Zaoza14

Новичок
Пользователь
Авг 28, 2020
6
0
1
при запуске в папке будет лежать файл с маской, в которой есть дата.
вместо DDMMYYYY должна быть дата сегодня? или какая?
 

Alexey123

Новичок
Пользователь
Авг 28, 2020
8
0
1
при запуске в папке будет лежать файл с маской, в которой есть дата.
вместо DDMMYYYY должна быть дата сегодня? или какая?
Дата может быть любой(
 

freebsdd

Новичок
Пользователь
Авг 28, 2020
13
0
1
Аээммм, да просто содержимое папки с маской .xlsx все файлы выбрать и далее у вас будет файл, с которым вы сможеет сделать всё что угодно. Если нужно запустить *.py, то файл можете использовать в качестве аргумента название файла при запуске. Ну или упростить и всё делать в одной программе, например через Multiprocessing, Process, Thread, exec, или извратиться на asyncio futures (последний я думаю будет лишним для такой на первый взгляд простой задачи)
 

Alexey123

Новичок
Пользователь
Авг 28, 2020
8
0
1
Аээммм, да просто содержимое папки с маской .xlsx все файлы выбрать и далее у вас будет файл, с которым вы сможеет сделать всё что угодно. Если нужно запустить *.py, то файл можете использовать в качестве аргумента название файла при запуске. Ну или упростить и всё делать в одной программе, например через Multiprocessing, Process, Thread, exec, или извратиться на asyncio futures (последний я думаю будет лишним для такой на первый взгляд простой задачи)
Но если в папке несколько файлов .xlsx, с разными именами как он мне выберет именно нужный? Допустим, есть три файла 'table73363820.xlsx', 'name05032017.xlsx' и 'name0503201710.xlsx'. Но мне нужен именно 'name05032017.xlsx'.
 

freebsdd

Новичок
Пользователь
Авг 28, 2020
13
0
1
Ну так вообще без проблем, выбираете все файлы по маске в этой папке, далее получаете название файла и используйте регулярное выражение, что нибудь типа /^name(\d{8,8})\.xlsx$/ , что под выражение подходит, значит ваш файл и далее уже делаете с ним что хотите

Ps: верность регулярки вы можете проверить тут
 

Alexey123

Новичок
Пользователь
Авг 28, 2020
8
0
1
Ну так вообще без проблем, выбираете все файлы по маске в этой папке, далее получаете название файла и используйте регулярное выражение, что нибудь типа /^name(\d{8,8})\.xlsx$/ , что под выражение подходит, значит ваш файл и далее уже делаете с ним что хотите

Ps: верность регулярки вы можете проверить тут
А если нету пути к папке? Ну т. е. я не знаю в какой именно папке все будет лежать. Если запустить .py и не прописывать путь к файлу в read_excel - он берет файл из той же папки. Можно ли как-то сделать в read_excel, чтобы автоматически искалось имя в нужном формате? df = read_excel( ???, sheet_name)
 

freebsdd

Новичок
Пользователь
Авг 28, 2020
13
0
1
Нууу как так то, файл запускать питона будем? Будем, значит уже есть абсолютный путь, там и валяются файлы же, он ж сам не запустится, всегда он запускается по абсолютному пути, или же он запускается с программы, где известен абсолютный путь, тем не менее идём дальше

Тут я вижу 2 варианта вашего положения:
0. Лень дописывать программу (а это смертный грех)
1. Действительно мало у вас информации, но как запускаете? Даже если нужно обновить код, куда зальёте обновление? Таки мне кажется вариант 1 верный, но чем чёрт не шутит

А если п.0, то продолжаем:
Тут я вижу приемлемых 3 варианта исхода событий:
0. Выяснить таки, куда кладутся файлы и допилить прогу
1. Поиск по системе всей (извращаться так по полной)
2. Курить документацию по read_excel, может есть возможность открытия файла по регулярке, если нет goto п.0


Ps: п.1 лучше не юзать
 

Alexey123

Новичок
Пользователь
Авг 28, 2020
8
0
1
Нууу как так то, файл запускать питона будем? Будем, значит уже есть абсолютный путь, там и валяются файлы же, он ж сам не запустится, всегда он запускается по абсолютному пути, или же он запускается с программы, где известен абсолютный путь, тем не менее идём дальше

Тут я вижу 2 варианта вашего положения:
0. Лень дописывать программу (а это смертный грех)
1. Действительно мало у вас информации, но как запускаете? Даже если нужно обновить код, куда зальёте обновление? Таки мне кажется вариант 1 верный, но чем чёрт не шутит

А если п.0, то продолжаем:
Тут я вижу приемлемых 3 варианта исхода событий:
0. Выяснить таки, куда кладутся файлы и допилить прогу
1. Поиск по системе всей (извращаться так по полной)
2. Курить документацию по read_excel, может есть возможность открытия файла по регулярке, если нет goto п.0


Ps: п.1 лучше не юзать
Вся суть: есть задание создать .py файл и отправить заказчику. Он положит этот файл в нужную папку и будет просто запускать при необходимости, при этом в той папке будут обновляться .xlsx файлы и .py должен будет сам искать нужные, обрабатывать их и после использования менять название
 

freebsdd

Новичок
Пользователь
Авг 28, 2020
13
0
1
Да ёшкин ты кот а, правильно заданный вопрос уже половина ответа, спросили бы так сразу, вчера бы ещё получили ответ, вот ваш путь абсолютный: os.path.abspath(__file__) + файл по регулярному выражению = обработка
 

Форум IT Специалистов