我正在编写一个脚本,将其输出写入系统目录。我没有使用root权限运行整个脚本,而是将输出写入临时文件,并在将临时文件复制到输出时仅使用提升的权限。
print(tempfile.read())
return_code = suprocess.call(['/usr/bin/sudo', 'cp', tmpfile.name, outfile])
if return_code != 0:
print('Copy failed')
sys.exit(1)
return_code = subprocess.call(['/usr/bin/sudo', 'chmod', '664', outfile])
with open(outfile) as f2:
print(f2.read())
第一个调试打印出生成的文件的预期内容,但第二个dprint为空。另外,检查文件系统中的文件说文件长度为0
个字节,并由root拥有。
我尝试了以下内容,似乎没有什么区别:
shell=True
tempfile.NamedTempfile
或自行创建临时文件并清理答案 0 :(得分:0)
解决了这个问题。调用tempfile
时,cp
仍然可以写入,并且在尝试复制时写入没有刷新到磁盘。