Как вы компилируете переменные и по-прежнему используете их по отдельности? - PullRequest
0 голосов
/ 08 апреля 2020

TL; DR - пытается это исправить, но не уверен в лучшей практике для составления списка переменных и разделения их на отдельные строки в файле .txt, в который они копируются.

Это мой первый пост здесь.

Я недавно создал скрипт для автоматизации чрезвычайно утомительного рабочего процесса, который включает в себя изменение документа Excel, копирование и вставку выходных данных из отдельных ячеек в зависимости от типа создаваемой конфигурации. и вставка в 3 отдельных файла .txt для отправки по электронной почте.

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

Я использую openpyxl & pycel для этого, так как я копирую ячейки, являющиеся выходами из формулы, которую я не могу получить ничего, кроме # N / A при строгом использовании openpyxl, поэтому я интегрировал pycel для этой части.

Я ссылался на мой код ниже, и я ценю любой ввод.

            F62 = format(excel.evaluate('Config!F62'))
            F63 = format(excel.evaluate('Config!F63'))
            F64 = format(excel.evaluate('Config!F64'))
            F65 = format(excel.evaluate('Config!F65'))
            F66 = format(excel.evaluate('Config!F66'))
            F67 = format(excel.evaluate('Config!F67'))
            F68 = format(excel.evaluate('Config!F68'))
            F69 = format(excel.evaluate('Config!F69'))
            F70 = format(excel.evaluate('Config!F70'))
            F71 = format(excel.evaluate('Config!F71'))
            F72 = format(excel.evaluate('Config!F72'))
            F73 = format(excel.evaluate('Config!F73'))
            F74 = format(excel.evaluate('Config!F74'))
            F75 = format(excel.evaluate('Config!F75'))
            F76 = format(excel.evaluate('Config!F76'))
            F77 = format(excel.evaluate('Config!F77'))
            #so on and so forth to put into:

with open(f'./GRAK-R-{KIT}/3_GRAK-R-{KIT}_FULL.txt', 'r') as basedone:
            linetest = f"{F62}\n{F63}\n{F64}\n{F65}\n{F66}\n{F67}\n{F68}\n{F69}\n{F70}\n{F71}\n{F72}\n{F73}\n{F74}\n{F75}\n{F76}\n{F77}\n{F78}\n{F79}\n{F80}\n{F81}\n{F82}\n{F83}\n{F84}\n{F85}\n{F86}\n{F87}\n{F88}\n{F89}\n{F90}\n{F91}\n{F92}\n{F93}\n{F94}\n{F95}\n{F96}\n{F97}\n{F98}\n{F99}\n{F100}\n{F101}\n{F102}\n{F103}\n{F104}\n{F105}\n{F106}\n{F107}\n{F108}\n{F109}\n{F110}\n{F111}\n{F112}\n{F113}\n{F114}\n{F115}\n{F116}\n{F117}\n{F118}\n{F119}\n{F120}\n{F121}\n{F122}\n{F123}\n{F124}\n{F125}\n{F126}\n{F127}\n{F128}\n{F129}\n{F130}\n{F131}\n{F132}\n{F133}\n{F134}\n{F135}\n{F136}\n{F137}\n{F138}\n{F139}\n{F140}\n{F141}\n{F142}\n{F143}\n{F144}\n{F145}\n{F146}\n{F147}\n{F148}\n{F149}\n{F150}\n{F151}\n{F152}\n{F153}\n{F154}\n{F155}\n{F156}\n{F157}\n{F158}\n{F159}\n{F160}\n{F161}\n{F162}\n{F163}\n{F164}\n{F165}\n{F166}\n{F167}\n{F168}\n{F169}\n{F170}\n{F171}\n{F172}\n{F173}\n{F174}\n{F175}\n{F176}\n{F177}\n{F178}\n{F179}\n {F180}\n{F181}\{F182}\n{F183}\n{F184}\n{F185}\n{F186}\n{F187}\n{F188}\n{F189}\n{F190}\n {F191}\n{F192}\n{F193}\n{F194}\n{F195}\n{F196}\n{F197}\n{F198}\n{F199}\n{F200}\n{F201}\n{F202}\n{F203}\n{F204}\n{F205}\n{F206}\n{F207}\n{F208}\n{F209}\n{F210}\n{F211}\n{F212}\n{F213}\n{F214}\n{F215}\n{F216}\n{F217}\n{F218}\n{F219}\n{F220}\n{F221}\n{F222}\n{F223}\n{F224}\n{F225}\n{F226}\n{F227}\n{F228}\n{F229}\n{F230}\n{F231}\n{F232}\n{F233}\n{F234}\n{F235}\n{F236}\n{F237}\n{F238}\n{F239}\n{F240}\n{F241}\n{F242}\n{F243}\n{F244}\n{F245}\n{F246}\n{F247}\n{F248}\n{F249}\n{F250}\n{F251}\n{F252}\n{F253}\n{F254}\n{F255}\n{F256}\n{F257}\n{F258}\n{F259}\n{F260}\n{F261}\n{F262}\n{F263}\n{F264}\n{F265}\n{F266}\n{F267}\n{F268}\n{F269}\n{F270}\n{F271}\n{F272}\n{F273}\n{F274}\n"
            oline = basedone.readlines()
            oline.insert(9,linetest)
            basedone.close()

        with open(f'./GRAK-R-{KIT}/3_GRAK-R-{KIT}_FULL.txt', 'w') as basedone:
            basedone.writelines(oline)
            basedone.close 

1 Ответ

0 голосов
/ 08 апреля 2020

Я не думаю, что вам нужно называть каждую переменную. Вы можете использовать f-strings и list comprehensions для сохранения гибкости кода.

min_cell = 62
max_cell = 77
column_name = 'F'
sheet_name = 'Config'

cell_names = [f'{sheet_name}!{column_name}{i}' for i in range(min_cell, max_cell + 1)]
vals = [format(excel.evaluate(cn)) for cn in cell_names] 
linetest = '\n'.join(vals)
...