有没有人知道从Python的win32版本中创建/读取符号链接的方法?理想情况下,应该有最少量的平台特定代码,因为我需要我的应用程序是跨平台的.
我正在尝试创建一个NTFS Junction.从cmd行我可以使用sysinternals中的junction.exe工具执行此操作.结点的DIR cmd输出如下所示:
Volume in drive C has no label.
Volume Serial Number is C8BC-2EBD
Directory of c:\users\cheeso\Documents
03/22/2009 09:45 PM <JUNCTION> My Music [\??\c:\users\cheeso\Music]
05/11/2007 05:42 PM <DIR> My Received Files
03/22/2009 09:46 PM <JUNCTION> my videos [\??\c:\users\cheeso\Videos]
Run Code Online (Sandbox Code Playgroud)
我在某地读过Junctions是Symbolic Links的子集.
所以我尝试使用CreateSymbolicLink创建一个Junction.当我这样做时,我实际上得到了一个符号链接,而不是一个连接点.
09/09/2009 11:50 AM <SYMLINKD> newLink [.\]
Run Code Online (Sandbox Code Playgroud)
还有CreateHardLink.那里的文档说交汇点(又名"重新分析点")是硬链接的子集.但我似乎无法接受这项工作.它完成但没有创建硬链接或联结.
我正在使用.NET/C#,导入如下所示:
[Interop.DllImport("kernel32.dll", EntryPoint="CreateSymbolicLinkW", CharSet=Interop.CharSet.Unicode)]
public static extern int CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);
[Interop.DllImport("kernel32.dll", EntryPoint="CreateHardLinkW", CharSet=Interop.CharSet.Unicode)]
public static extern bool CreateHardLink(string lpFileName, …Run Code Online (Sandbox Code Playgroud) 我试图编写一些需要调用本机WINAPI函数的python 代码。起初我遇到了这个pypiwin32包裹。然后,在互联网上的某个地方,我看到有人在使用该_winapi模块。我没有找到这个模块的正确文档,只有这个指向cpythonGitHub 页面的链接。
这是一个cpython特定的模块吗?也就是说,不保证其他实现都有这个模块吗?
如果我需要的功能已经在模块中实现了,
我还需要这个pypiwin32包_winapi吗?
我正在运行os.walk(),"C:\Users\confusedDev\Documents"我看到["My Music", "My Pictures"...]返回为子目录,但它们实际上并未被访问。经过一番研究,我发现它们实际上是Windows 中的连接点。
我的理解是 junction 是一个指向目录的符号链接,在 期间默认会被忽略os.walk(),但以下测试让我失败了
>>> os.path.islink("C:\\Users\\confusedDev\\Documents\\My Pictures")
False
Run Code Online (Sandbox Code Playgroud)
嗯...怎么os.walk()知道“C:\Users\confusedDev\Documents\My Pictures”是“C:\Users\confusedDev\Pictures”的符号链接并且需要跳过?我想调用相同的 api...目前,我的解决方法逻辑只是假设如果目录被 跳过os.walk(),那么它是一个结点
我想知道在 Linux 上是否可以识别文件(或链接)是否是硬链接。例如,如果我创建了:
dd if=/dev/urandom bs=1024 count=10000 of=file_10MB conv=notrunc
ln file_10MB file_10MB_link1
Run Code Online (Sandbox Code Playgroud)
我想创建一个检查函数,可以这样使用:
if is_hardlink("file_10MB_link1"):
pass
Run Code Online (Sandbox Code Playgroud)
如何使用 Python 检查文件是否为硬链接?