Как узнать имя накопителя, на котором стоит ОС
Ну хорошо, а если мне надо открыть какой-то файл из папки «Документы», при этом подставив название диска, то как реализовать это?
7 фев в 16:01
А «Документы» вообще не в appdata. Про выяснение расположения пользовательских папок я писал здесь: Как получить пути к стандартным папкам пользователя (Рабочий стол, Загрузки и т.п.)?
7 фев в 16:21
В пути вижу упоминание временного каталога. Он хранится в переменной %TMP% , если что.
8 фев в 0:04
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
В моем случае помогло os.path.expanduser(‘~’) . Пример использования:
x = os.path.expanduser('~') print(x)
C:\Users\KakaBik
Насколько я понял, работает это одинаково и на Linux, и на MacOS. Только пути будут разные
Отслеживать
ответ дан 8 фев в 14:49
45 5 5 бронзовых знаков
В вопросе одно, в комментариях другое, в ответе третье. Бардак какой-то. Ну и каталог пользователя может находиться не на системном диске
8 фев в 14:52
Нет, каталог пользователя не может быть перемещён. Он всегда будет только на том диске, где система. Могут быть перемещены только папки в каталоге например: «Рабочий стол», «Загрузки» и другие. Спасибо за ссылку на ваш ответ, очень информативно
8 фев в 15:25
Может-может, хотя делать это и не рекомендуется. Вот упоминание такого перемещения на сайте Microsoft есть, например learn.microsoft.com/en-US/troubleshoot/windows-server/…
Получение имени текущего пользователя в Python
Часто разработчики сталкиваются с задачей получения имени текущего пользователя в своих программах на Python. Это может быть полезно, например, при создании логов, требуемых для аудита, или при настройке пользовательских предпочтений в приложении.
Однако, проблема заключается в том, что стандартные методы Python, такие как os.getuid(), возвращают идентификатор пользователя, а не его имя. К тому же, некоторые библиотеки, такие как модуль pwd, работают только на Unix-системах, что делает их непригодными для использования в кросс-платформенных приложениях.
import os print(os.getuid()) # Вывод: 1001 (это идентификатор пользователя, а не его имя)
Для решения этой задачи на кросс-платформенной основе, можно использовать модуль getpass в Python. Этот модуль предоставляет функцию getuser() , которая возвращает имя текущего пользователя во всех операционных системах.
import getpass print(getpass.getuser()) # Вывод: 'username' (где 'username' - это имя текущего пользователя)
Таким образом, getpass.getuser() является простым и универсальным способом получения имени текущего пользователя в Python, не зависимо от используемой операционной системы.
Администрирование Django
Чтобы добавлять, редактировать и удалять записи, для которых мы только что создали модель, мы используем панель управления администратора Django.
Давай откроем файл blog/admin.py и заменим его содержимое на:
from django.contrib import admin from .models import Post admin.site.register(Post)
Как ты можешь заметить, мы импортировали (включили) модель Post, которую определили в предыдущей главе. Чтобы наша модель стала доступна на странице администрирования, нам нужно зарегистрировать её при помощи admin.site.register(Post) .
Хорошо, теперь нам нужно взглянуть на модель Post. Не забудь запустить веб-сервер командой python manage.py runserver . Перейди в браузер и набери адрес http://127.0.0.1:8000/admin/. Ты увидишь страницу авторизации:
Чтобы залогиниться, тебе сначала нужно создать суперпользователя (англ. superuser) — пользователя, который имеет полный доступ к управлению сайтом. Вернись к командной строке, набери python manage.py createsuperuser , и нажми Enter.
Не забудь: чтобы выполнять команды во время работы сервера, открой новое окно терминала и активируй в нём виртуальное окружение. Мы описывали ввод новых команд в разделе Запуск веб-сервера главы Твой первый проект на Django!.
При появлении запроса введи имя пользователя (строчными буквами, без пробелов), адрес электронной почты и пароль. Не беспокойся, если пароль не появляется на экране по мере ввода, так и задумано. Просто напечатай его и нажми Enter , чтобы продолжить. Результат должен выглядеть следующим образом (имя пользователя и почта, соответственно, будут твоими):
(myvenv) ~/djangogirls$ python manage.py createsuperuser Username: admin Email address: admin@admin.com Password: Password (again): Superuser created successfully.
Вернись в браузер и войди в систему при помощи имени пользователя и пароля, которые ты только что выбрала. Ты должна попасть в панель управления Django.

Перейди к разделу Posts и немного поэкспериментируй с ним. Добавь пять или шесть постов. Не беспокойся о содержании — можешь просто скопировать и вставить текст из этого учебника, чтобы сэкономить время 🙂
Убедись, что выбрала для двух или трёх записей (но не больше) дату публикации. Это пригодится позднее.

Если ты хочешь узнать больше об администрировании Django, то ознакомься с этим разделом официальной документации: https://docs.djangoproject.com/en/1.11/ref/contrib/admin/.
Сейчас, вероятно, подходящий момент, чтобы порадовать себя кружечкой кофе (или чая), а также съесть чего-нибудь для восполнения энергии. Ты только что создала свою первую модель Django и заслужила перерыв!
results matching » «
No results matching » «
Пример: Добавление участников на портал
В этом примере используется текстовый файл с данными пользователей, которые добавляются на портал в пакетном режиме. Выбор и предоставление ролей для каждого пользователя портала.
При запуске скрипта введите следующую обязательную информацию:
- Путь к текстовому файлу с данными пользователей, например, C:\users.txt . .
- Типы добавляемых на портал пользователей, например, built-in или enterprise . Более подробно о типах пользователей см. в Управление доступом на портал.
- Полное доменное имя компьютера с порталом, например, myportal.acme.com . Скрипт обращается к порталу по HTTPS через порт 7443 в обход ArcGIS Web Adaptor. Таким образом, скрипту не потребуется обрабатывать аутентификацию на веб-уровне, если портал настроен на ее использование.
- Имя пользователя и пароль для учетной записи, которая имеет права администратора портала. Если вы добавляете встроенные учетные записи, укажите учетные данные любого участника портала с правами доступа администратора. Если вы добавляете корпоративные учетные записи, используйте первичную учетную запись администратора, созданную после установки Portal for ArcGIS .
Примечание:
Демонстрация обработки аутентификации на веб-уровне скриптом Python не входит в круг вопросов, освещаемых этим примером.
Регистрация корпоративных учетных записей
При регистрации корпоративных учетных записей используется следующий формат каждой строки:
- login – Логин – регистрируемая корпоративная учетная запись.
- Если вы используете Active Directory, это имя учетной записи будет иметь формат sAMAccountName@DOMAIN . Имя домена должно быть полностью в верхнем регистре.
- Если вы используете LDAP, это имя учетной записи будет совпадать со значением userNameAttribute , которое вы указали при настройке хранилища учетных данных (аутентификации).
- Если вы используете корпоративные учетные записи на основе SAML, то имя этой учетной записи будет совпадать с атрибутом NameID провайдера аутентификации SAML.
Прежние версии:
В Portal for ArcGIS 10.3 и более ранних версий поддерживались следующие не настраиваемые роли: org_user , org_publisher и org_admin . В 10.3.1 эти значения устарели и заменены перечисленными выше. Можно продолжить использование старых ролей в версии 10.3.1, но не забывайте, что в следующих версиях программы эти значения могут не поддерживаться.
Вам необходимо указать имя учетной записи, адрес электронной почты, имя и роль. Описание и Idp UserName заполнять необязательно. Убедитесь, что значения имени учетной записи, адреса электронной почты и имени, которые вы ввели для каждой учетной записи, перечисленной в файле, полностью совпадают со значениями в вашем хранилище учетных данных. Портал не будет подключаться к вашему хранилищу учетных данных для проверки этих значений.
Далее показан пример записи регистрации корпоративной учетной записи Active Directory для имени пользователя jcho111 с email-адресом jcho@domain.com и полным именем Jon Cho. Имя пользователя размещено в его роли (user), а тип пользователя Viewer имеет описание, например, «пользователь департамента b»:
jcho111@DOMAIN|jcho@domain.com|Jon Cho|Viewer|user|department b
Далее показан пример записи регистрации корпоративной учетной записи из провайдера аутентификаций SAML. Имя пользователя (логин) – rsmith@domain.com, адрес его электронной почты – rsmith@domain.com, а полное имя – Robert Smith. Имени пользователя назначена роль издателя (publisher) и тип пользователя Creator, у которого rsmith@domain.com в качестве UserName в провайдере аутентификаций (Idp UserName).
rsmith@domain.com|rsmith@domain.com|Robert Smith|Creator|publisher||rsmith@domain.com
Ниже представлен пример записи регистрации корпоративной учетной записи LDAP для имени пользователя sjames4513 с адресом электронной почты sjames@domain.com и полным именем Sara James. Это имя пользователя записано с ролью пользователя (admin) и типом пользователя GIS Professional, а также приведено описание.
sjames4513@DOMAIN|sjames@domain.com|Sara James|GISProfessional|admin|Department Lead and GIS Manager
Ниже представлен пример записи регистрации корпоративной учетной записи для имени пользователя srajhandas с адресом электронной почты srajhandas@domain.com и полным именем Satish Rajhandas. Имя пользователя размещено в его роли (user) и типе пользователя Viewer.
srajhandas@DOMAIN|srajhandas@domain.com|Satish Rajhandas|Viewer|user
Далее показан пример записи регистрации корпоративной учетной записи из провайдера аутентификаций SAML. Логин пользователя – djohnson308, адрес его электронной почты – djohnson@domain.com, а полное имя – Daisha Johnson. Этому логину назначена роль пользователя (user) и тип пользователя Creator, также введено описание и задано djohnson@domain.com в качестве UserName в провайдере аутентификаций.
djohnson308@DOMAIN|djohnson@domain.com|Daisha Johnson|Creator|user|Account Specialist|djohnson@domain.com
Добавление встроенных учетных записей портала
При добавлении встроенных учетных записей портала формат каждой записи в текстовом файле выглядит следующим образом:
- username – имя пользователя, используемое для встроенной учетной записи. Имена пользователей должны быть уникальны; два участника не могут иметь одинаковые имена.
- password – пароль, заданный для данной учетной записи. Пользователи могут использовать его во время первого входа на портал, а затем изменить пароль, отредактировав свой профиль.
- email address – Укажите адрес email для учетной записи. Этот параметр является обязательным. Поэтому укажите адрес email, даже если он некорректный.
- name – псевдоним учетной записи, который будет использоваться в вашей организации ArcGIS. При подключении пользователя к веб-сайту портала это имя появляется в верхней части веб-сайта портала.
- Тип пользователя – название типа пользователя, к которому он будет приписан. Выберите любой доступный тип пользователя из ниспадающего списка. Вы можете нажать на совместимые роли и количество совместимых дополнительных лицензий, чтобы узнать, что совместимо с выбранным типом пользователя.. Более подробно см. Типы пользователей, роли и права доступа.
- role – роль, назначенная учетной записи в организации ArcGIS. Корректными значениями ролей являются: user (пользователь), publisher (издатель), admin (администратор) и , где – это имя настраиваемой роли (к примеру, hostedservicepublisher).
- description – описание, содержит текст с описанием учетной записи. Описание не может быть более 250 символов.
Ниже представлен пример записи, добавляющей встроенную учетную запись портала с именем пользователя pub1 для Барбары Уильямс и адресом электронной почты bwilliams@domain.com. В этом примере для pub1 назначена роль издателя.
pub1|changepasswordlater|bwilliams@domain.com|Barbara Williams|Creator|publisher
Ниже представлен пример записи, добавляющей встроенную учетную запись портала с именем пользователя jcho для Jon Cho и адресом электронной почты jcho@domain.com. Этой же записью для jcho назначается роль администратора с описанием ГИС-менеджер.
jcho|changepasswordlater|jcho@domain.com|Jon Cho|GISProfessional|admin|GIS Manager
#!/usr/bin/env python # Requires Python 2.7+ # Demonstrates how to add users to the ArcGIS Enterprise portal in bulk # For Http calls import urllib2, urllib, json # For system tools import sys, os # For reading passwords without echoing import getpass # Other utilities import Queue # Defines the entry point into the script def main(argv): print "This script adds users in bulk into a portal. \n" #Get parameters parameters = getParametersFromUser () portalURL = parameters['portalURL'] provider = parameters['provider'] userName = parameters['userName'] password = parameters['password'] inUserFile = parameters['inUserFile'] #Get user data from file usersData = getUserDataFromFile(inUserFile,provider) #Create users createUsers (userName,password, portalURL,provider, usersData) raw_input('Press ENTER to close the script.') return # This function loads all the user data in the input text file into a Python Queue. # This usersQueue can be later passed to the createUsers function def getUserDataFromFile(inUserFile,provider): usersQ = Queue.Queue() inFileHandle = open(inUserFile, 'r') userCount = 0 print '. Processing input users file at: ' + inUserFile entryCount = 1 roleID = for line in inFileHandle.readlines(): userParams = line.strip('\n').split('|') userParamDict = <> if provider=="enterprise": keyParams = ['username', 'email', 'fullname', 'role', 'userLicenseTypeId', 'description', 'idpUsername', 'firstname', 'lastname'] if len(userParams) == len(keyParams): for i, param in enumerate(keyParams): userParamDict[param] = userParams[i] if userParamDict['role'] in roleID.keys(): userParamDict['role'] = roleID[userParamDict['role']] else: print('The value for the user role "<>" in users text file is invalid.'.format(userParamDict['role'])) print('Accepted values are viewer, user, publisher, or admin.') raise SystemExit('Invalid user role') usersQ.put(userParamDict) userCount = userCount + 1 else: print('The format for entry "<>" is invalid.\nThe format for enterprise accounts is:'.format(line.strip('\n'))) print(' ||||||||') raise SystemExit('Invalid format') elif provider=="arcgis": keyParams = ['username', 'password', 'email', 'fullname', 'role', 'userLicenseTypeId', 'description', 'firstname', 'lastname'] if len(userParams) == len(keyParams): for i, param in enumerate(keyParams): userParamDict[param] = userParams[i] if userParamDict['role'] in roleID.keys(): userParamDict['role'] = roleID[userParamDict['role']] else: print('The value for the user role "<>" in users text file is invalid.'.format(userParamDict['role'])) print('Accepted values are viewer, user, publisher, or admin.') raise SystemExit('Invalid user role') usersQ.put (userParamDict) userCount = userCount + 1 else: print('The format for entry "<>" is invalid.\nThe format for built-in accounts is:'.format(line.strip('\n'))) print(' ||||||||') raise SystemExit('Invalid format') else: raise SystemExit( 'The value for the user type is invalid. ') entryCount = entryCount +1 inFileHandle.close() # Create users and report results print '. Total members to be added: ' + str(userCount) return usersQ # This function connects to the portal and adds members to it from a collection def createUsers(username,password, portalUrl, provider,userParamsQ): print '. Connecting to ' + portalUrl token = generateToken(username,password, portalUrl) print '. Adding users ' usersLeftInQueue = True while usersLeftInQueue: try: userDict = userParamsQ.get(False) userDict['f'] = 'json' userDict['token'] = token userDict['provider'] = provider params = urllib.urlencode(userDict) request = urllib2.Request(portalUrl + '/portaladmin/security/users/createUser?',params, < 'Referer' : portalUrl >) # POST the create request response = urllib2.urlopen(request).read() responseJSON = json.loads(response) # Log results if responseJSON.has_key('error'): errDict = responseJSON['error'] if int(errDict['code'])==498: message = 'Token Expired. Getting new token. Username: ' + userDict['username'] + ' will be added later' token = generateToken(username,password, portalUrl) userParamsQ.put(userDict) else: message = 'Error Code: %s \n Message: %s' % (errDict['code'], errDict['message']) print '\n' + message else: # Success if responseJSON.has_key('status'): resultStatus = responseJSON['status'] print 'User: %s account created' % (userDict['username']) except Queue.Empty: usersLeftInQueue = False # This function gets a token from the portal def generateToken(username, password, portalUrl): parameters = urllib.urlencode() try: response = urllib.urlopen(portalUrl + '/sharing/rest/generateToken?', parameters).read() except Exception as e: raise SystemExit( 'Unable to open the url %s/sharing/rest/generateToken' % (portalUrl)) responseJSON = json.loads(response.strip(' \t\n\r')) # Log results if responseJSON.has_key('error'): errDict = responseJSON['error'] if int(errDict['code'])==498: message = 'Token Expired. Getting new token. ' token = generateToken(username,password, portalUrl) else: message = 'Error Code: %s \n Message: %s' % (errDict['code'], errDict['message']) raise SystemExit(message) token = responseJSON.get('token') return token # This function gets gets parameters from the user in interactive mode def getParametersFromUser(): parameters = <> # Get Location of users file inUserFile = raw_input ("Enter path to users text file: ") if not os.path.exists(inUserFile): raise SystemExit( 'Input file: %s does not exist' % (inUserFile)) parameters['inUserFile'] = inUserFile # Enteprise logins or built-in accounts? userInput = raw_input ("What type of users do you want to add to the portal? Accepted values are built-in or enterprise: ") if userInput.lower()=="built-in": parameters['provider'] = 'arcgis' print ' Built-in accounts will be added to the portal. \n' elif userInput.lower()=="enterprise": parameters['provider'] = 'enterprise' print ' Enterprise accounts will be added to the portal. \n' else: raise SystemExit( 'The value entered for the user type %s is invalid. Accepted values are built-in or enterprise. ' % (userInput)) # Get Portal URL hostname = raw_input("Enter the fully qualified portal hostname (for example myportal.acme.com): ") parameters['portalURL'] = 'https://' + hostname + ':7443/arcgis' print ' Users will be added to portal at: ' + parameters['portalURL'] + '\n' # Get a username and password with portal administrative privileges parameters['userName'] = raw_input("Enter a built-in user name with portal administrative privileges: ") parameters['password'] = getpass.getpass("Enter password: ") print '\n' return parameters # Script start if __name__ == "__main__": sys.exit(main(sys.argv[1:]))В этом разделе
- Регистрация корпоративных учетных записей
- Добавление встроенных учетных записей портала
