如何将变量从 shell 命令分配给 python 脚本
How to assign variable from a shell command to python script
我正在尝试 运行 在 slurm 中使用数组进行批处理。我只知道 shell 命令从数组(文本文件)中提取变量,但未能将其分配为 Python 变量。
我必须为 Python slurm 脚本分配一个变量。我使用 shell 命令从数组中提取值。但在将其分配给变量时遇到错误。我使用了子进程,os.system 和 os.popen。
或者有什么方法可以从文本文件中提取值以用作 Python 变量?
start_date = os.system('$(cat startdate.txt | sed -n ${SLURM_ARRAY_TASK_ID}p)')
start_date = subprocess.check_output("$(cat startdate.txt | sed -n ${SLURM_ARRAY_TASK_ID}p)", shell=True)
start_date = os.popen('$(cat startdate.txt | sed -n ${SLURM_ARRAY_TASK_ID}p)').read()
start_date = '07-24-2004'
不要使用 $(...)
。这将执行命令,然后尝试执行命令的输出。您希望将输出发送回 python,而不是由 shell.
重新执行
start_date = subprocess.check_output("cat startdate.txt | sed -n ${SLURM_ARRAY_TASK_ID}p", shell=True)
Barmar 是正确的,$(...)
部分是为什么你没有得到你想要的,但真正的问题是为什么当你使用 python 时你想使用 cat 和 sed 作为出色地。只需打开文件并提取您想要的信息
import os
with open("startdate.txt", "r") as fh:
lines = fh.readlines()
start_date = lines[os.environ['SLURM_ARRAY_TASK_ID']].strip()
.strip()
部分去掉了换行符。
我正在尝试 运行 在 slurm 中使用数组进行批处理。我只知道 shell 命令从数组(文本文件)中提取变量,但未能将其分配为 Python 变量。
我必须为 Python slurm 脚本分配一个变量。我使用 shell 命令从数组中提取值。但在将其分配给变量时遇到错误。我使用了子进程,os.system 和 os.popen。 或者有什么方法可以从文本文件中提取值以用作 Python 变量?
start_date = os.system('$(cat startdate.txt | sed -n ${SLURM_ARRAY_TASK_ID}p)')
start_date = subprocess.check_output("$(cat startdate.txt | sed -n ${SLURM_ARRAY_TASK_ID}p)", shell=True)
start_date = os.popen('$(cat startdate.txt | sed -n ${SLURM_ARRAY_TASK_ID}p)').read()
start_date = '07-24-2004'
不要使用 $(...)
。这将执行命令,然后尝试执行命令的输出。您希望将输出发送回 python,而不是由 shell.
start_date = subprocess.check_output("cat startdate.txt | sed -n ${SLURM_ARRAY_TASK_ID}p", shell=True)
Barmar 是正确的,$(...)
部分是为什么你没有得到你想要的,但真正的问题是为什么当你使用 python 时你想使用 cat 和 sed 作为出色地。只需打开文件并提取您想要的信息
import os
with open("startdate.txt", "r") as fh:
lines = fh.readlines()
start_date = lines[os.environ['SLURM_ARRAY_TASK_ID']].strip()
.strip()
部分去掉了换行符。