我想有权在不使用sudo的情况下写入python子目录中的新文件

时间:2015-03-29 22:08:08

标签: python permissions

很容易找到人们问如何做到这一点,但从我所知道的,从来没有一个适用于我的答案。我只是想创建权限,一般来说,写入子目录中的新文件。在python中我调用

filename = 'dfs_err_results/err_results_st'+str(station_id)
file = open(filename,'w')
pickle.dump(results, file)
file.close()

open() IOError: [Errno 13] Permission denied: 'dfs_err_results/err_results_st5'失败。如果我使用sudo python输入,则不会发生该错误,但是必须记住这一点并且必须检查sudo ps x内有大量进程的进度是很烦人的。

我是否正确无法使用chmod更改 future / 文件的子目录?或者无法在python脚本中设置代码行来设置权限?

谢谢!

3 个答案:

答案 0 :(得分:3)

是的,它确实用sudo执行命令。 例如,在打开文件之前,您可以更改其写入权限。做任何你需要的事情并改变许可。 我现在手动没有linux,尝试这样的事情:

subprocess.call(['/usr/bin/sudo', 'chmod', '777', filename])
with open(filename) as file:
    pickle.dump(results, file)

答案 1 :(得分:0)

这主要由xmp贡献,但它确实需要多一行来创建文件:

subprocess.call(['/usr/bin/sudo', 'touch', filename])
subprocess.call(['/usr/bin/sudo', 'chmod', '777', filename])
file = open(filename,'w')
pickle.dump(results, file)
file.close()

感谢您的帮助!

答案 2 :(得分:0)

这对我有用:

os.chmod(filename, stat.S_IRWXO | stat.S_IRWXG | stat.S_IRWXU)
with open(filename, 'w') as f:
     pickle.dump(i, f)

这为您可以通过更改统计模式选择所需权限的所有内容提供完全权限:http://www.tutorialspoint.com/python/os_chmod.htm