我正在嘗試使用 slurm 中的數(shù)組運(yùn)行批處理。我只知道從數(shù)組(文本文件)中提取變量的 shell 命令,但未能將其分配為 Python 變量。我必須為 Python slurm 腳本分配一個(gè)變量。我使用 shell 命令從數(shù)組中提取值。但是在將其分配給變量時(shí)遇到錯(cuò)誤。我使用了子進(jìn)程、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'
2 回答

弒天下
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
不要使用$(...)
. 這將執(zhí)行命令,然后嘗試執(zhí)行命令的輸出。您希望將輸出發(fā)送回 python,而不是由 shell 重新執(zhí)行。
start_date = subprocess.check_output("cat startdate.txt | sed -n ${SLURM_ARRAY_TASK_ID}p", shell=True)

墨色風(fēng)雨
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
Barmar 是正確的,$(...)部分是為什么你沒有得到你想要的,但真正的問題是為什么當(dāng)你使用 python 時(shí)你還想使用 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()部分?jǐn)[脫了換行符。
添加回答
舉報(bào)
0/150
提交
取消