Python模块xattr没有属性lis

2024-04-28 19:21:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我不得不修改许多小错误,主要是xattr not knowing its methods。在

例如xattr.set(...) has to be changed to 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可能使用了错误的模块(对于python2.7而不是3?)。所以我试着卸载2.7模块,但得到的是:

^{pr2}$

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


Tags: 模块文件toimport脚本属性ubuntu错误
1条回答
网友
1楼 · 发布于 2024-04-28 19:21:07

凌晨3点,听着一群小杂烩,自从我出于好奇进了这个兔子洞。。。我想给您一个使用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')

运行文件的结果是:

^{pr2}$

最后

至于"import xattr" still worked even in 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时必须分别使用python或{}。我正在开发一个macosx,所以两者都有,但是这个脚本是用python3编写的。在

参考文献:

希望有帮助!祝你玩得开心!在

相关问题 更多 >