gpt4 book ai didi

Python 模块 xattr 没有属性列表

转载 作者:行者123 更新时间:2023-12-04 17:12:26 25 4
gpt4 key购买 nike

我用模块 xattr 写了一个脚本来设置一些文件的扩展属性。我在 Ubuntu 中的 python3 中成功地测试了它,但它在我的 RasperryPi 上不起作用。

我不得不更改许多小错误,主要是xattr 不知道它的方法

例如,xattr.set(...) 必须更改为 xattr.setattr(...)。但是我没有列出它们。所以我只尝试了基础知识并得到了错误:

import xattr
xattr.list('files.py')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'xattr' has no attribute 'list'

我的想法是 python 可能使用了错误的模块(对于 python 2.7 而不是 3?)。所以我尝试卸载 2.7 模块但得到了这个:

...$ pip uninstall xattr
Traceback (most recent call last):
File "/usr/local/bin/pip", line 7, in <module>
from pip._internal import main
ImportError: No module named _internal

但我可以成功卸载 python3 包。在那之后,即使在 python3 中,“import xattr”仍然有效?

最佳答案

现在是凌晨 3 点,听着 glitch mob 的声音,自从我出于好奇进入了这个兔子洞之后……我想给你我的代码示例来使用 python 的内置 xattr 模块。

创建一个名为 xattr_example.py 的文件并将此代码放入其中,然后运行该文件。

文件:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# =============================================================================
"""The Following Is An Example for xattr."""
# =============================================================================

import xattr

print("{}".format(xattr.__file__))
# '/usr/local/lib/python3.7/site-packages/xattr/__init__.py'


def showww_me_the_meta(file_name):
"""Using Python's XATTR to list Key Meta Names for File."""
print("Showing Initial Names & Values.")
attrz = xattr.listxattr(file_name)
result = ("A. Info Showcased Init: {}".format(attrz))
print("{}".format(result))
return result


def update_the_meta(file_name):
"""Using Python's XATTR to Update Key Meta Names for File."""
xattr.setxattr(file_name, 'custom.comment',
'I tawt I taw a puddy tat!.'.encode('utf-8'))
xattr.setxattr(file_name, 'Music.Artist',
'I did! '
'I did taw a puddy tat!'.encode('utf-8'))
get_the_meta_values(file_name)
return


def get_the_meta_values(file_name):
"""Example."""
print("B. Listing Meta for: {}".format(file_name))
attrz = xattr.listxattr(file_name)
print("")
for i in reversed(attrz):
abc = xattr.getxattr(file_name, i)
result = ("{} : {}".format(i, abc))
print(" {}".format(result))
print("")
return


def remove_the_meta(file_name):
"""Example."""
xattr.removexattr(file_name, 'custom.comment')
xattr.removexattr(file_name, 'Music.Artist')
attrz = xattr.listxattr(file_name)
result = ("C. Info Removed Meta: {}".format(attrz))
print("{}".format(result))
return result


if __name__ == '__main__':
showww_me_the_meta('xattr_example.py')
update_the_meta('xattr_example.py')
remove_the_meta('xattr_example.py')

文件运行结果为:

$ python3 xattr_example.py
/usr/local/lib/python3.7/site-packages/xattr/__init__.py
Showing Initial Names & Values.
A. Info Showcased Init: ()
B. Listing Meta for: xattr_example.py

custom.comment : b'I tawt I taw a puddy tat!.'
Music.Artist : b'I did! I did taw a puddy tat!'

C. Info Removed Meta: ()

最后

至于"import xattr"即使在 python3 中仍然有效? 请注意,可以为两个版本安装 python,但路径不同。

python -V
# Python 2.7.16
which python
# /usr/local/bin/python

python3 -V
Python 3.7.4
which python3
/usr/local/bin/python3

如果列出了多个版本,调用python时必须分别使用pythonpython3。我在 Mac OSX 上工作,所以两者都有,但这个脚本是用 python3 编写的。

引用资料:

希望对您有所帮助!祝你玩得开心!

关于Python 模块 xattr 没有属性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52403922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com