Das ist mein Setup ist:Einstellung Gruppenberechtigungen mit Python
Ich habe eine Virtuelle Maschine (Ubuntu 14.04 LTS.), Wo es eine PostgreSQL/PostGIS-Datenbank ausgeführt wird.
Mit Windows 7 in QGIS stelle ich eine Verbindung zu dieser Datenbank her und lade den Feature-Layer in mein GIS-Projekt.
Mit etwas Python-Code erstelle ich eine Datei mit einer Kachel-ID und einigen Informationen.
import os
import io
import time
layer=None
for lyr in QgsMapLayerRegistry.instance().mapLayers().values():
if lyr.name() == "fishnet_final":
layer = lyr
for f in layer.selectedFeatures():
pth = os.path.join(os.path.dirname(r'H:\path_to_file\'), str(f['name']) + "_" + str(time.strftime("%Y-%m-%d")) + "_" + str(f['country']) + ".txt")
fle = open(pth,'wb')
fle.writelines(str(f['name']))
fle.write('\n')
fle.write(str(time.strftime("%Y-%d-%m")))
fle.write('\n')
fle.write(str(f['country']))
fle.write('\n')
fle.close()
os.rename(pth, pth.replace(' ', ''))
Die Datei hat die Berechtigungen:
-rwx------
ich auch die gleichen Berechtigungen für meine Fraktion und andere festlegen möchten.
-rwxrwxrwx
Ich habe versucht:
import shlex
command=shlex.split("chmod 777 r'H:\path_to_file\file.txt'")
subprocess.call(command)
Kein Erfolg.
Was funktionierte ist:
command=shlex.split("touch r'H:\path_to_file\file.txt'")
ODER
command=shlex.split("rm r'H:\path_to_file\file.txt'")
Warum funktioniert nicht den Befehl chmod?
Unter UNIX kann ich diese Datei chmod und ich bin der gleiche Benutzer wie in Windows.
Ich habe auch die Methode os.chmod ausprobiert. Aber kein Erfolg.
import os, stat
st = os.stat(r'H:\path_to_file\file.txt')
os.chmod(r'H:\path_to_file\file.txt', st.st_mode | 0o111)
UPDATE
Wenn ich eine "chmod 777 Datei" unter UNIX (Solaris) die Berechtigungen sind
-rwxrwxrwx
Was kann ich jetzt tun ist herabzustufen/Entfernen von Berechtigungen unter Windows im GIS-Projekt:
subprocess.call(r'chmod 400 "H:\path_to_file\file.txt"', shell=True)
0
-r-xr-xr-x
Mit diesem comm und ich bekomme ein 0
Feedback in der Python-Konsole Ausgabe
ich auch ein 0
Feedback bekommen, wenn ich einen chmod 777 auf die neue Datei zu tun, aber nichts passiert.
Das Problem ist, dass ich nur Berechtigungen herabstufen kann. Ich kann keine neuen Berechtigungen festlegen!
Können Sie die Rückgabe jedes 'subprocess.call (...)' drucken? Es wird helfen, den Fehler zu finden. –
Führen Sie das Skript auf dem Windows- oder Linux-Rechner aus? Wenn das Laufwerk H: ein freigegebener Samba-Ordner ist, funktioniert möglicherweise die Windows-Antwort auf dem Windows-Computer. Ist dies nicht der Fall, müssen Sie möglicherweise Berechtigungen in der Datei "/ etc/samba/smb.conf" auf dem Linux-Server festlegen. –
Ich führe das Skript in Windows. – Stefan