*args
и **kwargs
: позволяют передавать переменное количество аргументов функции.
*args
: используется для отправки списка аргументов переменной длины без ключевого слова в функцию:
def args(normal_arg, *argv):
print ("normal argument:",normal_arg)
for arg in argv:
print("Argument in list of arguments from *argv:", arg)
args('animals','fish','duck','bird')
Будет выдавать:
normal argument: animals
Argument in list of arguments from *argv: fish
Argument in list of arguments from *argv: duck
Argument in list of arguments from *argv: bird
**kwargs*
**kwargs
позволяет передавать ключевую переменную переменной длины аргументов функции. Вы должны использовать **kwargs
, если вы хотите обрабатывать именованные аргументы в функции.
def who(**kwargs):
if kwargs is not None:
for key, value in kwargs.items():
print ("Your %s is %s." %(key,value))
who (name="Nikola", last_name="Tesla", birthday = "7.10.1856", birthplace = "Croatia")
Производит:
Your name is Nikola.
Your last_name is Tesla.
Your birthday is 7.10.1856.
Your birthplace is Croatia.
Вам нужно использовать пространство имен Security
.
См. этот ответ SO.
Из ответов:
FileIOPermission writePermission = new FileIOPermission(FileIOPermissionAccess.Write, filename);
if(!SecurityManager.IsGranted(writePermission))
{
//No permission.
//Either throw an exception so this can be handled by a calling function
//or inform the user that they do not have permission to write to the folder and return.
}
Обновление: (следующие комментарии)
FileIOPermission
касается политик безопасности, а не прав на файловую систему, поэтому вам нужно использовать DirectoryInfo.GetAccessControl
.
Проще говоря, вы не можете. Невозможно проверить, доступен ли каталог, все, что вы можете определить, это доступность. Причина, по которой, как только проверка завершится, разрешения могут быть изменены и аннулировать ваш чек. Наиболее надежной стратегией, которую вы можете реализовать, является доступ к каталогам и захват UnauthorizedAccessException
.
Недавно я написал статью в блоге по этому вопросу, которая здесь немного подробнее
вы могли бы просто создать простую небольшую логическую функцию и иметь переменную информации каталога, чтобы получить каталоги с заданного пути. если это происходит без проблем, верните true, если исключение - это дескриптор, верните false или разделите предложение исключения на вспомогательные исключения и получите код ошибки.
Granting of permissions is determined by policy and is different from a demand subject to overrides, such as an assert. Also, IsGranted only tests the grant of the calling code assembly, independent of other callers on the stack.
– Oded 25 February 2010 в 20:24no read permission rights
предоставлены. Но все же может быть право перечислить содержимое папки. В этом случае GetAccessControl () не поможет. – boboes 3 December 2015 в 00:44