Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开一个没有xattr的文本文件会给出;“不允许操作”;在macOS Catalina和Python 2下_Python_Macos_Macos Catalina_Xattr - Fatal编程技术网

打开一个没有xattr的文本文件会给出;“不允许操作”;在macOS Catalina和Python 2下

打开一个没有xattr的文本文件会给出;“不允许操作”;在macOS Catalina和Python 2下,python,macos,macos-catalina,xattr,Python,Macos,Macos Catalina,Xattr,在运行macOS Catalina 10.15.6的机器上,我一直很难让Python(令人尴尬的是,在本例中是Python 2)打开一些文件。我把这个问题归结为以下几点。我有两个明显相同的文本文件,除了不同的xattr。Python愿意打开其中一个,而不是另一个。这是我的密码: import os, subprocess for filename in ["file1.txt", "file2.txt"]: path = os.path.join

在运行macOS Catalina 10.15.6的机器上,我一直很难让Python(令人尴尬的是,在本例中是Python 2)打开一些文件。我把这个问题归结为以下几点。我有两个明显相同的文本文件,除了不同的xattr。Python愿意打开其中一个,而不是另一个。这是我的密码:

import os, subprocess

for filename in ["file1.txt", "file2.txt"]:
    path = os.path.join(os.path.expanduser("~/Downloads/"+filename))
    assert os.path.isfile(path)
    print(filename, " attr:", oct(os.stat(path).st_mode & 0o777))
    print(filename, "xattr:", subprocess.check_output(["xattr", path]).strip())
    try:
        with open(path) as infile:
            print("Succeeded for file", filename)
    except IOError as ioe:
        print(ioe.args[1], "for", filename)
以下是输出:

file1.txt  attr: 0777
file1.txt xattr: com.apple.macl
Succeeded for file file1.txt
file2.txt  attr: 0777
file2.txt xattr: 
Operation not permitted for file2.txt
您可能会认为,在
file2.txt
上缺少xattr使我的计算机确信file2.txt是毒药,不可信,但Emacs非常乐意打开它

“如果您从
file1.txt
中删除
com.apple.macl
,您会问。事实证明macOS不允许你这么做,但是。如果我这样做,那么我也会失去在Python中读取
file1.txt
的能力

我无法读取的文件是在没有恶意的情况下创建的——例如,在Emacs中创建的文件会得到这种处理。我想知道:

  • 这是怎么回事?扩展属性真的是罪魁祸首吗
  • 我怎样才能让Python读取这些良性文件,而我的计算机上的其他程序也很乐意读取这些文件