我遇到的问题是我想暂时进入sudo用户,运行几个命令,然后回到普通用户并以该模式运行命令。
您可以在此处找到我将使用的脚本:https://github.com/Greduan/dotfiles/blob/master/scripts/symlinks.py
基本上,当我在我的dotfiles的/bin
文件夹下安装脚本时,我需要sudo访问权限以便为该文件夹创建符号链接。您可以在代码中的最后一个for语句下找到脚本的这一部分。
但是,由于我依赖于一些使用当前用户作为指导来执行操作的命令,因此我不能将整个脚本作为sudo
运行。上次我尝试了一个关于文件夹不存在的错误。
感谢您提供的所有帮助。
答案 0 :(得分:4)
如果您不介意安装外部依赖项,sh
module会使这非常简单:
import sh
sh.cp('foo.txt', 'bar.txt')
with sh.sudo:
sh.cp('foo2.txt', 'bar2.txt')
答案 1 :(得分:0)
最后我尝试了@Blender的解决方案,但它没有用,或者我无法弄明白。
所以相反,我做了以下事情:
subprocess.Popen('sudo rm ' + final_dest, shell=True)
和
subprocess.Popen('sudo ln -s ' + final_src + ' ' + final_dest, shell=True)
这正如我预期的那样正常工作,它没有额外的依赖关系。谢谢你的回答@Blender,但它对我不起作用。 ; |