I know there's a ton of other material here and @ SE regarding this subject, but conceptually i'm just stuck. In an effort to improve the modularity of my code, I'm trying to get better at importing existing functions into scripts. I'm stuck on successfully passing arguments captured within the script to the imported module. Ideally I just want to use the script and pass it a handful of client identifiers (arguments) and have those cascade down into several modules called up in the script. Like: functiontest2('identifier')
some crude code:
functiontest2.py
<SPAN class="keyword token">from</SPAN> HarvestTable <SPAN class="keyword token">import</SPAN> HarvestTableReport
<SPAN class="keyword token">import</SPAN> sys
HarvestThing <SPAN class="operator token">=</SPAN> sys<SPAN class="punctuation token">.</SPAN>argv<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN>
HarvestTableReport<SPAN class="punctuation token">(</SPAN>HarvestThing<SPAN class="punctuation token">)</SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
HarvestTable.py
<SPAN class="keyword token">import</SPAN> numpy <SPAN class="keyword token">as</SPAN> np
<SPAN class="keyword token">import</SPAN> pandas <SPAN class="keyword token">as</SPAN> pd
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">HarvestTableReport</SPAN><SPAN class="punctuation token">(</SPAN>HarvestID<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
table <SPAN class="operator token">=</SPAN> <SPAN class="string token">"\\\\fileshare\SDE_CONNECTIONS\\LV_NEXUS.sde\\LV_NEXUS.DATAOWNER.NORTHEAST\\clientGDB.featureclass"</SPAN>
HUID <SPAN class="operator token">=</SPAN> HarvestID
whereClause <SPAN class="operator token">=</SPAN> <SPAN class="string token">""" "LV_HARVEST_UNIT_ID" = '{0}' """</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>HUID<SPAN class="punctuation token">)</SPAN>
tableArray <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>TableToNumPyArray<SPAN class="punctuation token">(</SPAN>table<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'SUPER_TYPE'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'STRATA'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'OS_TYPE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STAND_NUMB'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SILV_PRES'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ACRES'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> where_clause <SPAN class="operator token">=</SPAN> whereClause<SPAN class="punctuation token">)</SPAN>
df <SPAN class="operator token">=</SPAN> round<SPAN class="punctuation token">(</SPAN>pd<SPAN class="punctuation token">.</SPAN>DataFrame<SPAN class="punctuation token">(</SPAN>tableArray<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN>
report <SPAN class="operator token">=</SPAN> df<SPAN class="punctuation token">.</SPAN>groupby<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">'SUPER_TYPE'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>apply<SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">lambda</SPAN> sub_df<SPAN class="punctuation token">:</SPAN> sub_df<SPAN class="punctuation token">.</SPAN>pivot_table<SPAN class="punctuation token">(</SPAN>index<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">'STRATA'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'OS_TYPE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STAND_NUMB'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SILV_PRES'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> values<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">'ACRES'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>aggfunc<SPAN class="operator token">=</SPAN>np<SPAN class="punctuation token">.</SPAN>sum<SPAN class="punctuation token">,</SPAN> margins<SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">,</SPAN>margins_name<SPAN class="operator token">=</SPAN> <SPAN class="string token">'TOTAL'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># this is creating a new row at level(1) called grand total</SPAN>
<SPAN class="comment token"># set it equal to the sum of ACRES where level(1) != 'Total' so you are not counting the calculated totals in the total sum</SPAN>
report<SPAN class="punctuation token">.</SPAN>loc<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">''</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'GRAND TOTAL'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">''</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">''</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">''</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> report<SPAN class="punctuation token">[</SPAN>report<SPAN class="punctuation token">.</SPAN>index<SPAN class="punctuation token">.</SPAN>get_level_values<SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">!=</SPAN> <SPAN class="string token">'TOTAL'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">.</SPAN>sum<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>whereClause<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> np<SPAN class="punctuation token">.</SPAN>round<SPAN class="punctuation token">(</SPAN>report<SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN>
HarvestTableReport<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>