What’s the “python way” to recursively set the owner and group to files in a directory? I could just pass a ‘chown -R’ command to shell, but I feel like I’m missing something obvious.
I’m mucking about with this:
import os
path = "/tmp/foo"
for root, dirs, files in os.walk(path):
for momo in dirs:
os.chown(momo, 502, 20)
This seems to work for setting the directory, but fails when applied to files. I suspect the files are not getting the whole path, so chown fails since it can’t find the files. The error is:
‘OSError: [Errno 2] No such file or directory: ‘foo.html’
What am I overlooking here?
The
dirsandfileslists are all always relative toroot– i.e., they are thebasename()of the files/folders, i.e. they don’t have a/in them (or\on windows). You need to join the dirs/files torootto get their whole path if you want your code to work to infinite levels of recursion:Surprisingly, the
shutilmodule doesn’t have a function for this.