我不太清楚这是怎么回事。基于python的解释
>; 操作系统正常: 要包含在access()的mode参数中的值,以测试路径的可写性。
我想这个检查应该返回True,即使文件不存在,但是它的路径是有效的,并且我有权写这个文件。在
但当我试图检查文件路径是否可写时,就会发生这种情况。在
import os, subprocess
pwd = os.getcwd();
temp_file_to_write = os.path.join( pwd, "temp_file" );
# use os.access to check
say = "";
if ( os.access( temp_file_to_write, os.W_OK ) ) :
say = "writeable";
else :
say = "NOT writeable";
print "L10", temp_file_to_write, "is", say
# use try/except
try :
with open( temp_file_to_write, "w" ) as F :
F.write( "L14 I am a temp file which is said " + say + "\n" );
print "L15", temp_file_to_write, "is written";
print subprocess.check_output( ['cat', temp_file_to_write ] );
except Exception, e:
print "L18", temp_file_to_write, "is NOT writeable";
它会产生以下结果
^{pr2}$有人知道为什么吗?如果我对os.W_OK的理解是错误的,你能告诉我用python检查以下两个问题的正确方法:1)文件路径是否有效;2)我是否有写入权限。在
也许你用sudo运行你的脚本(或者在Windows上运行类似的东西)? 我在linux上有这个(我给chmod 400):
是否可以创建新文件取决于目录拥有的权限,而不是不存在的新文件。在
一旦文件被创建(存在),那么
access(W_OK)
可能返回true,如果您可以修改它的内容。在最初的问题问如何检查写入文件的权限。但是,在Python中,最好使用try-except块来尝试写入文件,而不是在可能的情况下测试访问。原因在操作系统访问()关于Python.org网站网址:https://docs.python.org/3/library/os.html
从网站:
注意:使用access()检查用户是否被授权打开文件 实际上,使用open()执行此操作会创建一个安全漏洞,因为用户可能会利用检查和打开文件之间的短时间间隔进行操作。最好使用EAFP技术。例如:
最好写为:
^{pr2}$注意:即使access()指示I/O操作将成功,I/O操作也可能失败,特别是对于网络文件系统上的操作,这些操作的权限语义可能超出了通常的POSIX权限位模型。在
相关问题 更多 >
编程相关推荐