python windows 10 个创作者更新中的符号链接
python symlink in windows 10 creators update
自从 windows 10 创建者更新后,您可以在创建符号链接时启用开发者模式来规避管理员权限。现在,我可以像这样使用 mklink 创建一个符号链接:
os.system('mklink %s %s' %(dst, src))
希望 dst 是目标符号链接路径,src 是符号链接的源文件。虽然它似乎工作正常,但如果失败也不会出错,这使得确保每个符号链接成功变得有点困难。我可以检查路径是否存在于每个符号链接之后,但这比 try/except 子句效率低。还有一个看起来像命令 shell window(?) 的命令,每次都会快速弹出和关闭 - 当您对很多文件进行符号链接时,这真的很烦人...
所以,我一直在尝试我在堆栈溢出时发现的其他选项,例如:How to create symlinks in windows using Python? Unfortunately, the CreateSymbolicLinkW command doesn't seem to work for me... I also found this: OS.symlink support in windows 似乎您需要调整组策略编辑器;但是,它显然仍然需要管理员组中的用户 运行 作为管理员的进程,即使您明确地为该用户设置了符号链接权限。
随着 windows 10 创建者更新,在 CreateSymbolicLink api 中提到了一个新的 dwflag (SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE) 你可以在这里看到参考:symlinks windows 10
使用 ctypes 的东西有点让我头疼,所以我想知道是否有人知道:我真的可以使用那个新的 dwflag 吗?我该如何使用它?如果不以管理员身份 运行 运行进程,它会工作吗?
我使用 Autodesk Maya,所以我坚持使用 python 2.7 选项...我没有尝试以管理员身份启动 Maya,所以我不知道这是否可行,但看起来一个相当烦人的箍,即使它确实跳过了......我感谢你能提供的任何帮助
it doesn't error if it fails
os.system 将 return 调用的退出状态。它不会引发异常。
如果您查看 os.system 的文档,他们建议使用 subprocess 模块。事实上,subprocess.check_call 会按照您的描述进行操作(在非零退出状态时引发异常)。也许这样会更好。
另一方面,命令 mklink 将 return 零退出状态,即使源不存在(它将创建一个 link 到不存在的文件和 return 0)。您可能想要验证您提到的实际 link,具体取决于您要查找的错误。
至于隐藏控制台 window,请参阅 this。
os.symlink
自 python 3.8 在 windows 开始即用即用,只要 Developer Mode 开启即可。
不确定这是否对 Maya 有帮助;不过他们似乎有 committed to Python 3。
自从 windows 10 创建者更新后,您可以在创建符号链接时启用开发者模式来规避管理员权限。现在,我可以像这样使用 mklink 创建一个符号链接:
os.system('mklink %s %s' %(dst, src))
希望 dst 是目标符号链接路径,src 是符号链接的源文件。虽然它似乎工作正常,但如果失败也不会出错,这使得确保每个符号链接成功变得有点困难。我可以检查路径是否存在于每个符号链接之后,但这比 try/except 子句效率低。还有一个看起来像命令 shell window(?) 的命令,每次都会快速弹出和关闭 - 当您对很多文件进行符号链接时,这真的很烦人...
所以,我一直在尝试我在堆栈溢出时发现的其他选项,例如:How to create symlinks in windows using Python? Unfortunately, the CreateSymbolicLinkW command doesn't seem to work for me... I also found this: OS.symlink support in windows 似乎您需要调整组策略编辑器;但是,它显然仍然需要管理员组中的用户 运行 作为管理员的进程,即使您明确地为该用户设置了符号链接权限。
随着 windows 10 创建者更新,在 CreateSymbolicLink api 中提到了一个新的 dwflag (SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE) 你可以在这里看到参考:symlinks windows 10
使用 ctypes 的东西有点让我头疼,所以我想知道是否有人知道:我真的可以使用那个新的 dwflag 吗?我该如何使用它?如果不以管理员身份 运行 运行进程,它会工作吗?
我使用 Autodesk Maya,所以我坚持使用 python 2.7 选项...我没有尝试以管理员身份启动 Maya,所以我不知道这是否可行,但看起来一个相当烦人的箍,即使它确实跳过了......我感谢你能提供的任何帮助
it doesn't error if it fails
os.system 将 return 调用的退出状态。它不会引发异常。
如果您查看 os.system 的文档,他们建议使用 subprocess 模块。事实上,subprocess.check_call 会按照您的描述进行操作(在非零退出状态时引发异常)。也许这样会更好。
另一方面,命令 mklink 将 return 零退出状态,即使源不存在(它将创建一个 link 到不存在的文件和 return 0)。您可能想要验证您提到的实际 link,具体取决于您要查找的错误。
至于隐藏控制台 window,请参阅 this。
os.symlink
自 python 3.8 在 windows 开始即用即用,只要 Developer Mode 开启即可。
不确定这是否对 Maya 有帮助;不过他们似乎有 committed to Python 3。