【问题标题】:Matlab creates permissionless filesMatlab 创建无权限文件
【发布时间】:2015-03-25 21:29:57
【问题描述】:

我在 MATLAB 中有一个脚本,可以输出各种文件,包括 NIFTI(MRI 图像)文件和文本日志文件。有时,创建的输出文件会将其文件权限设置为任何人(包括文件所有者)都不能读取或写入,这似乎是随机发生的。

这通常不是问题,除非它发生在日志中,因为它会导致 MATLAB 在尝试将错误写入日志时无休止地递归。不幸的是,我找不到任何在任何程序(包括 MATLAB)中遇到过类似行为的人。

脚本、输入文件和输出文件都位于连接到运行 Ubuntu 14.04 的服务器的 NAS 驱动器上,所以我想知道这是否是脚本的问题(可能不是因为无论输入如何,它都会间歇性发生)、matlab 环境或 NAS 驱动器。

【问题讨论】:

    标签: matlab random file-permissions nas


    【解决方案1】:

    我不确定为什么 yoru 文件属性/权限会发生变化,但我知道解决方案。如果您从 unix 知道 chmod,您想要 file attributes,这应该很熟悉,如果不是,您仍然可以

    这样的事情会让你的文件w可供aunix(ubuntu)系统上的所有用户组读取

    fileattrib('/home/work/results/my_file.log','+w','a')
    

    编辑

    由于这些文件不存在,这可能会更好。只需将 fopen 与 'w+' 标志一起使用。这意味着追加的写入模式。如果文件不存在,+ 也会创建文件(并且您有权在指定目录中创建文件)

    fid = fopen('my_new_log.txt','w+');
    fprintf(fid,'some strings for my file');
    fclose(fid);
    

    确保在完成后关闭文件也很重要。

    【讨论】:

    • 那不只是改变一个或多个已经存在的文件的属性吗?我需要防止这种行为发生,因为它会导致 Matlab 停止脚本并抛出错误。
    • 我现在明白了。我以为您在 matlab 中修改了一个文件,然后在修改它之后权限不同。尝试发布您的一些代码(可能是您创建和关闭文件的位置),可能还有其他事情在起作用。可能在写入/关闭文件时出错,因此权限处于奇怪的状态,但我需要查看更多才能确定
    • 不幸的是,我认为我不能发布代码。该脚本是另一个实验室管道的一部分;大小和权限限制都会使其变得困难。
    • 感谢您的帮助!我会添加它,看看它是否解决了问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2016-02-01
    • 2017-04-08
    相关资源
    最近更新 更多