是否可以通过使用“X”命令传递的命令行语句等将宏变量从SAS传递给Python?到目前为止,我已经想出了一种方法,包括将宏变量写入文本文件,然后让Python读取它。
该方法似乎是一个可能的香蕉皮,代码中有一个关键步骤写出文本文件。我已经在网上浏览了一些可能的方法,但没有真正找到任何东西。
代码将动态生成以下字符串:
%let loader = "%NRSTR(finance.yahoo.com/d/... &svar11.+&svar12.+&svar13.+&svar14.+&svar15.+&svar16.+&svar17.+&svar18.+&svar19.+&svar20.+ &svar21.+&svar22.+&svar23.+&svar24.+&svar25.+&svar26.+&svar27.+&svar28.+&svar29.+&svar30.+ &svar31.+&svar32.+&svar33.+&svar34.+&svar35.+&svar36.+&svar37.+&svar38.+&svar39.+&svar40.+ &svar41.+&svar42.+&svar43.+&svar44.+&svar45.+&svar46.+&svar47.+&svar48.+&svar49.%NRSTR(&f=)&&fvar&a.";
此处宏变量将解析为代码中较早的各种交易所提供的股票代码。我的原始版本的代码将此字符串放在文件名url语句中,但这证明太慢,所以我在Python中构建了一些更快但仍然是硬编码的东西。雅虎!流这将不会支持超过约200个代码,并且交易的代码每天更新,所以我不能硬编码。
粗略的想法是通过X命令将宏变量& loader传递给命令行,然后Python以某种方式将其拾取。文本文件方法是将上面解析的字符串的值写出到文本文件,然后从SAS调用一些Python代码(我很好,如何做到这一点),这将在文本末尾创建一个变量文件。如果可以通过命令行直接从SAS将变量传递给Python来完成所有工作,我认为这样会更清晰。