os.remove()是否有sudo权限?

4

我有一个现有的文件需要删除,但在尝试删除时出现以下错误:

os.remove(input_path)
OSError: [Errno 13] Permission denied: 

除了执行以下操作外,是否有其他方法可以删除已经存在的文件:

subprocess.call(['rm', input_path])

2
为什么会使用 subprocess.call 帮助呢? - user2864740
subprocess.call 这一行代码会如何避免这个问题? - shx2
有很多方法可以删除现有文件。 input_path 是否是一个目录? - Chrispresso
1个回答

3

由于出现“权限被拒绝”错误,显然是文件(或其父目录)的权限与运行Python进程的用户的权限之间存在“不匹配”。

最佳实践是修复权限,而不是寻找形式为sudo的“快捷方式”,可以修复需要删除的文件或运行Python进程的用户的权限。

权限有其使用原因。通过使用sudo等技巧来绕过它们,您会冒着遇到问题的风险。


我在rssh chroot监狱中有一个受限用户,可以使用该受限UID(一个dropbox)创建文件。不幸的是,sftp和rsync都允许rssh用户使用他的UID创建带有文件的子目录。我有另一个用户(不同的UID),我在其中“管理”受限UID的文件,在处理后将其删除。但是我发现我无法删除子目录中的文件,因为权限不足。添加/etc/sudoers行以允许rm -rf /home/dropbox/SUBDIR/*可以解决问题,但是python需要一个subprocess来执行sudo。我的权限无法“修复”。 - DavidG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接