查看文件系统是否支持扩展属性

问题描述 投票:0回答:1

我有一个调用另一个(外部)程序的Python程序:

cmd = [ "unsquashfs", "-n", "-d", dirname, filename ]
subprocess.check_call( cmd )

到目前为止,它有效。但现在我开始在 /tmp 中使用 tmpfs 文件系统运行这个程序,它不支持 xattrs 并且程序子进程失败并显示:

write_xattr: failed to write xattr user.random-seed-creditable for file some/file/somewhere because extended attributes are not supported by the destination filesystem
Ignoring xattrs in filesystem
To avoid this error message, specify -no-xattrs

它非常友善地告诉我我需要添加另一个参数,太棒了。但该程序属于不同的团队,整个公司都使用它,所以我想最小化我的更改,并仅在需要时添加参数(当不支持 xattrs 时) - 据我所知,某个地方的某个人依赖于正常情况下设置的 xattrs。 那么,我该如何实现以下内容?:

if not filesystemSupportsXattrs(dirname):
  cmd += ['-no-xattrs']
python linux filesystems xattr
1个回答
0
投票

您的

filesystemSupportsXattrs(dir)
函数可以在目录中创建一个临时文件,并尝试
setfattr
某些属性(例如 user.test-xattr-support),并使用
ENOTSUP
检查调用是否成功或失败。在函数返回之前取消链接临时文件。

© www.soinside.com 2019 - 2024. All rights reserved.