Создайте точку соединения NTFS в Python

Скремблирование имени используется, чтобы гарантировать, чтобы подклассы случайно не переопределяли закрытые методы и атрибуты их суперклассов. Это не разработано для предотвращения преднамеренного доступа снаружи.

, Например:

>>> class Foo(object):
...     def __init__(self):
...         self.__baz = 42
...     def foo(self):
...         print self.__baz
...     
>>> class Bar(Foo):
...     def __init__(self):
...         super(Bar, self).__init__()
...         self.__baz = 21
...     def bar(self):
...         print self.__baz
...
>>> x = Bar()
>>> x.foo()
42
>>> x.bar()
21
>>> print x.__dict__
{'_Bar__baz': 21, '_Foo__baz': 42}

, Конечно, это ломается, если два различных класса имеют то же имя.

15
задан CharlesB 1 February 2016 в 18:46
поделиться

2 ответа

вы можете использовать модули API python win32, например,

import win32file

win32file.CreateSymbolicLink(srcDir, targetDir, 1)

см. http://docs.activestate.com/activepython/2.5/pywin32/win32file__CreateSymbolicLink_meth.html для получения дополнительных сведений

если вы тоже не хотите полагаться на это, вы всегда можете использовать ctypes и напрямую вызвать CreateSymbolicLinl Win32 API, который в любом случае является простым вызовом

вот пример вызова с использованием ctypes

import ctypes

kdll = ctypes.windll.LoadLibrary("kernel32.dll")

kdll.CreateSymbolicLinkA("d:\testdir", "d:\testdir_link", 1)

MSDN говорит Минимум поддерживаемый клиент Windows Vista

8
ответ дан 1 December 2019 в 02:55
поделиться

Вы не хотите полагаться на внешние инструменты, но не против полагаться на конкретную среду? Я думаю, вы можете с уверенностью предположить, что, если вы используете NTFS, утилита junction, вероятно, будет там.

Но, если вы имеете в виду, что не хотите вызывать внешнюю программу, я обнаружил ctypes бесценный материал. Он позволяет вызывать библиотеки DLL Windows прямо из Python. И я почти уверен, что в настоящее время он входит в стандартные выпуски Python.

Вам просто нужно выяснить, в какой Windows DLL используется вызов API CreateJunction () (или как там это называется в Windows) и настраиваем параметры и звоним. Желаю удачи, Microsoft, похоже, не очень хорошо поддерживает это.

1
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: