【发布时间】:2022-04-18 14:07:45
【问题描述】:
我正在尝试启动可能的主要 Python 脚本,其中一些参数列在 txt 文件 (config.txt) 中。
因为参数几乎每次启动都会改变,我不想每次都输入它们。它们不是字面上的“配置”,但我没有找到正确的文件名(这是另一回事)。
见下文:
-param1 1
-param2 2
-verbose
我想最终做一些类似的事情:
python C:\somewhere\main.py -param1 1 -param2 2 -verbose
而不是当前行为:python C:\somewhere\main.py config.txt
顺便说一句,程序错过了(显然)。
我已经在 “启动前:激活工具”部分中尝试了 windows for 循环:
$: for /f "delims=" %x in (config.txt) do set ARGS=%ARGS%%x
$: python C:\somewhere\main.py %ARGS%
但它只保留config.txt 的最后一行在ARGS 内。
我还尝试将文件的内容通过管道传输到我的 python 主程序中,例如:
python C:\somewhere\main.py < config.txt
但它也不起作用。
【问题讨论】:
-
如果通过管道输入,则需要读取标准输入。如果您提供文件,则需要打开并读取该文件。这两个选项都不会扩展到 cli args,我不确定这是否可行,那么您在解析文件时遇到了什么问题?
-
我不想将文件作为参数并对其进行解析,也不想 pip 和读取标准输入;我只是尝试了不同的解决方案(不令人满意)。这个项目真的很大,我只是在这里简化了我的问题,让它变得简单。欢迎任何将文件内容作为参数的提示!
-
如果有的话,我认为 for 循环似乎是最接近的,但你会向脚本传递一个参数,而不是单个参数
-
它只设置了最后一行,因为你没有在构建 ARGS 时累积它,你只是将它设置为 x 的值
-
我刚刚纠正了这个错过的副本/过去。我做了
for ... do ARGS=%ARGS%%x,它只占用了最后一个。请注意,for循环应该填充变量,毕竟,我将它用于我的脚本启动。但是for循环的结果只是config.txt文件的最后一行。
标签: python windows pycharm run-configuration