在运行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不允许你这么做,但是there's a workaround。如果我这样做,那么我也会失去用Python读取file1.txt
的能力
我无法读取的文件是在没有恶意的情况下创建的——例如,在Emacs中创建的文件会得到这种处理。我想知道:
目前没有回答
相关问题 更多 >
编程相关推荐