Это моя настройка:
У меня есть VirtualMachine (Ubuntu 14.04. LTS), где работает база данных PostgreSQL/PostGIS.
С Windows 7 в QGIS я подключаюсь к этой базе данных и загружаю функциональный слой в свой проект ГИС.
С некоторым кодом python я создаю файл с идентификатором плитки и некоторой информацией.
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(' ', ''))
У файла есть разрешения:
-rwx------
Я хочу установить одинаковые разрешения для моей группы и других.
-rwxrwxrwx
Я пробовал:
import shlex
command=shlex.split("chmod 777 r'H:\path_to_file\file.txt'")
subprocess.call(command)
Нет успеха.
Работает:
command=shlex.split("touch r'H:\path_to_file\file.txt'")
ИЛИ
command=shlex.split("rm r'H:\path_to_file\file.txt'")
Почему команда chmod не работает?
В UNIX я могу chmod этот файл, и я использую тот же пользователь, что и в Windows.
Я также пробовал метод os.chmod. Но никакого успеха.
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
Когда я делаю "файл chmod 777" под UNIX (Solaris), разрешения имеют
-rwxrwxrwx
Теперь я могу сделать снимок/удалить разрешения под Windows в проекте ГИС:
subprocess.call(r'chmod 400 "H:\path_to_file\file.txt"', shell=True)
0
-r-xr-xr-x
С помощью этой команды я получаю обратную связь 0
на выходе консоли python
Я также получаю обратную связь 0
, когда я делаю chmod 777 в новом файле, но ничего не происходит.
Проблема заключается в том, что я могу только понижать разрешения. Я не могу устанавливать новые разрешения!