5

我有一个脚本,运行时会在其中创建一个目录/home/test/,然后在其中写入一些文件。当我运行这个脚本时,它工作正常。但是,当我从 perl 脚本中调用它时

$ret = `/home/..../testscript.py`

它没有权限,因此无法创建文件夹,或者创建后无法在其中写入。看起来当 Python 这样做时open("/home/test/abcde/file1.txt", "w"),该文件具有权限-rw-r--r--

我能做些什么来解决这个问题?有没有办法设置 /home/test 以递归方式使所有子目录具有全局写访问权限?或者更好的解决方案?

4

1 回答 1

12

放:

os.umask(0000)

在 Python 脚本创建目录之前。如果您无法更改 Python 脚本,请输入:

umask(0000)

在 Perl 脚本调用 Python 脚本之前。

当一个新的文件或目录被创建时,权限是通过在调用creat()or中指定的权限来确定的mkdir(),然后屏蔽掉umask.

通常,应用程序在调用函数时指定06660777权限(取决于它们是否正在创建应该是可执行的东西)。umaskis的一个常见值022,它关闭组和世界写入权限。如果您不希望它们关闭,请使用上述umask值来保留调用中指定的权限。

于 2013-07-19T22:46:58.353 回答