如何在使用普通用户权限运行的python3.6脚本中使用sudo权限运行shutil.copy2()函数?

2024-04-26 19:09:38 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我想做的。此脚本使用普通用户权限执行,但它必须将文件复制到根用户拥有的位置。如何使用shutil.copy2()执行复制?另一种方法是使用subprocess.run()运行bash cp命令。但如果不走这条路,我想知道处理这种情况的python方法。或者subprocess.run()函数是将文件复制到根用户位置的唯一方法吗

import shutil
from pathlib import Path
from subprocess import run
import sys 

ext_schema_name = f'org.gnome.shell.extensions.arc-menu.gschema.xml'
ext_schema_path = Path( f'/usr/share/gnome-shell/extensions/arc-menu@linxgem33.com/schemas/org.gnome.shell.extensions.arc-menu.gschema.xml' )

glib_schemas = Path( '/usr/share/glib-2.0/schemas/' )
ext_glib_schema_path = glib_schemas / ext_schema_name

#This cmd should not work due to invalid permission. 
#What is the pythonic way to do this?
shutil.copy2( ext_schema_path, ext_glib_schema_path )

#The subprocess alternative that should work
run( f'pkexec cp  {ext_schema_path} {ext_glib_schema_path}', shell=True, stdout=sys.stdout )  

Tags: path方法runimportschemaextensionsshellschemas