Суп из молозива, воды, молока и некондиции
Железо — враг премиксов
Настройка вакуума
Запустить Python через bat
Задача: по графику запускать ежедневно программу на python.
1. Создаем bat-файл. Лучше всего в Notepad++, т.к. бывают проблемы с кодировкой, особенно если путь содержит кириллические символы.
«C:\Users\admin\PycharmProjects\csv_xls\venv\Scripts\python.exe» main.py — если закинуть bat в папку с программой на python
«C:\Users\admin\PycharmProjects\csv_xls\venv\Scripts\python.exe» «C:\Users\admin\PycharmProjects\csv_xls\main.py» — если положить bat в любую другую папку
Проблема была в том, что программа не работала через bat-файл, хотя через PyCharm работала без проблем. Выяснилось, что в bat-файле надо было ссылаться на Python, который лежит в папке проекта — «C:\Users\admin\PycharmProjects\csv_xls\venv\Scripts\python.exe» . Видимо там есть библиотеки, используемые в проекте, а в основном Python’е, который установлен на компьютер, этих библиотек нет.
2. Создаем в Планировщике Windows задачу.
Проблема при этом была в том, что задача через планировщик не работала, выдавала ошибку (0х2). Решилось тем, что убрал bat файл в другое место, а именно в корень диска C.
Как преобразовать csv в xls
import csv
from openpyxl import Workbook
def convert_csv_to_xlsx():
wb = Workbook()
sheet = wb.active
CSV_SEPARATOR = ";"
with open('G:/Мой диск/Рассвет/DC/PN_COUNT.CSV') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
for idx, val in enumerate(col.split(CSV_SEPARATOR)):
cell = sheet.cell(row=r + 1, column=idx + 1)
cell.value = val.strip()
try:
cell.value = int(cell.value)
except ValueError:
pass
wb.save('G:/Мой диск/Рассвет/DC/PN_COUNT.xlsx')
convert_csv_to_xlsx()
Код на Python. Умеет различать разделитель. Раскидывает данные по ячейкам, а не просто меняет расширение файла как некоторые примеры в интернете.
По ходу разработки выяснилось, что нужно удалить лишние пробелы, чтобы потом преобразовать строку в число.
Единственная проблема, которую не смог решить, это некорректное преобразование csv в xls, если в csv есть значения с запятой. Видимо проблема в используемой библиотеке openpyxl.