【问题标题】:Permission to save a file to disk with python script使用 python 脚本将文件保存到磁盘的权限
【发布时间】:2012-04-03 16:38:30
【问题描述】:

我有这个测试代码,它只是将一个 XML 文件保存到一个文件夹中。我想安排一个 crontab 作业让它每分钟运行一次,但是当我使用 sudo 并输入我的密码时,我只能获得将 XML 保存到磁盘的权限。当我使用 crontab 安排它时,它会打印字符串但不保存文件。我怎样才能让它工作?

#!/usr/bin/python

import sys
import time
from socket import *
from xml.dom.minidom import Document

def main(args):
       doc     = Document()
       with open("/Users/lucasp/Desktop/LogsXML" + time.strftime("%Y-%m-%d-%H.%M.%S", time.localtime()) + ".xml", "w") as f:
           f.write("doc")
       string = "File saved! : LogsXML/" + time.strftime("%Y-%m-%d-%H.%M.%S", time.localtime()) + ".xml"
       print string

if __name__ == '__main__':
        sys.exit (main (sys.argv))

【问题讨论】:

  • 这不是代码问题,这是您系统的权限问题。此外,您可能想查看os.path.join() - 路径上的字符串连接很脆弱。
  • 你可以把它放在根 crontab 中。但是,既然文件夹在你的主目录中,你为什么需要 sudo 呢?您可能应该只更改该文件夹的权限以确保您的帐户具有写入权限(使用 chmod 或通过 Finder)。
  • 但是我应该给谁权限呢?

标签: python xml file


【解决方案1】:

在运行脚本之前修复权限:找出运行时使用的 uid cron(可能是“crontab”)。使用 chown(可能以 root 身份)将文件 LogsXML 的 gid 更改为该组,并授予组对该文件的写访问权限。例如,

sudo chown lucasp:crontab ~lucasp/Desktop/LogsXML
chmod g+w ~lucasp/Desktop/LogsXML

(如果脚本需要创建新文件,chown 目录并使用chown g+wx <directory> 授予写入和执行权限)。

【讨论】:

  • 它给了我“chown: crontab: Invalid argument”
  • 发挥你的想象力。您可以将行 /usr/bin/id > /tmp/all.processes 放入 cron 脚本中。
  • 我不明白。那有什么作用?
猜你喜欢
  • 2012-04-14
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 2016-07-22
  • 2013-12-19
  • 2010-09-23
  • 2010-11-08
  • 1970-01-01
相关资源
最近更新 更多