Nano Hash - криптовалюты, майнинг, программирование

Прочитайте файл xlsx и добавьте к нему кадр данных, все в файле .exe, созданном с помощью pyinstaller.

У меня есть файл .py, который я превратил в исполняемый файл с помощью pyinstaller. Все работает нормально: я могу прочитать данные в файле excel текущего рабочего каталога, а также могу записать файл .txt; однако, когда я пытаюсь добавить данные одного из фреймов данных сеанса в один из файлов excel (в первой пустой строке), я получаю PermissionError: [Errno 13] Permission denied:

Чтобы создать этот .exe, я создаю виртуальную среду, в которой устанавливаю все зависимости, затем, как только venv активируется в CMD, я запускаю (venv) C:\Users\Usuario\Desktop\test>pyi-makespec --onefile test.py. Затем я удостоверяюсь, что в файле .spec есть вся необходимая информация, например. возможность чтения файлов CWD и зависимостей библиотек (что приводит к этому, следуя инструкциям на это руководство). После этого я готов запустить (venv) C:\Users\Usuario\Desktop\test>pyinstaller test.spec, который создает файл .exe (внутри папки dist, которую я перемещаю в основную папку)

.exe работает гладко вплоть до того момента, когда я хочу прочитать существующий файл .xlsx и добавить к нему данные. Я столкнулся с той же проблемой ранее с этой программой, когда пытался сделать df_xxx.to_csv(path), чтобы записать некоторые данные в виде файла .txt. Для ясности код, с помощью которого я успешно обошел эту проблему:

cwd = os.getcwd()
rewards_filename = "rewards_" + str(a_tuple_variable).replace(", ", "_") + ".txt"   

with open(os.path.join(cwd,rewards_filename), "x") as rewards_outfile: 
    rewards_outfile.write(str(df_to_export_as_txt).rstrip(r"\r\n")) # I strip newlines
rewards_outfile.close()

Программа работает до тех пор, пока не встретит эту вспомогательную функцию, которую я оставлю как есть, изменив, конечно, только имя файла, передав ей ранее созданная переменная historical_filename = os.path.join(cwd,"historical.xlsx"). Запуск прямо из Spyder работает нормально, добавляя данные в нужное место, но он прерывается при выполнении файла .exe. Я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "test.py", line 219, in <module>
    append_df_to_excel(filename = historical_filename, df = df_to_append_to_historical, sheet_name = "Sheet1", startcol = 0, startrow = None)
  File "test.py", line 183, in append_df_to_excel
    writer = pandas.ExcelWriter(filename, engine = "openpyxl")
  File "pandas\io\excel\_openpyxl.py", line 30, in __init__
  File "pandas\io\excel\_base.py", line 799, in __init__
  File "pandas\io\common.py", line 651, in get_handle
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\Usuario\\Desktop\\test\\historical.xlsx'
[30112] Failed to execute script test

Я также пробовал этот ответ, но появляется та же ошибка.

Мне интересно, будет ли работать аналогичный подход, который я использовал для обхода проблемы .txt, но AFAIU этот подход в значительной степени соответствует тому, что я вижу во вспомогательной функции выше.

EDIT: следующий фрагмент также не работает в .exe, но работает непосредственно из Spyder

with pandas.ExcelWriter(os.path.join(cwd, historical_filename), engine = "openpyxl", mode = "a") as writer:
    df_multiples_boost_only_valid_historical.to_excel(writer, index = False)
writer.close()

Любая помощь в этом будет принята с благодарностью!


Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..