我想知道是否有人可以用Matlab fopen命令来说明以下问题:
>> [stat myjob] = unix('echo $PBS_NODEFILE'); % gets PBS file name with allocated nodes
>> myjob
myjob =
/opt/torque/aux//66058.crunch.local
>> fid = fopen('/opt/torque/aux//66058.crunch.local')
fid =
3
>> fgetl(fid)
ans =
compute-9-2
>> fclose(fid);我需要节点的名称,以便在脚本中控制以后的一些决策。如果我在一个交互式的PBS工作中,上面的工作可以工作,但在大多数情况下,我需要在没有干预的情况下启动这些工作。当我尝试通过存储的文件名执行此操作时:
>> fid = fopen(myjob) % returns invalid
fid =
-1
>> fgetl(fid)
??? Error using ==> fgetl at 44
Invalid file identifier. Use fopen to generate a valid file identifier.为什么,当我直接输入存储在myjob中的值时,我会得到一个有效的标识符,但是当我输入myjob时,它会失败吗?
谢谢,安德鲁
发布于 2011-04-02 02:08:10
试试这个:
fid = fopen(deblank(myjob));从上面输出的格式来看,在显示myjob的值之后似乎出现了一个额外的空行,这表明字符串的末尾可能出现了换行符。换行符将导致文件名无法识别,因此您可以使用函数DEBLANK从字符串中删除任何尾随空格(或者可以使用函数STRTRIM删除尾随空格和前导空格)。
https://stackoverflow.com/questions/5516926
复制相似问题