【发布时间】:2013-03-12 21:42:55
【问题描述】:
我需要为 dir2 中的每一项 dir1(文件或目录)创建一个符号链接。 dir2 已经存在并且不是符号链接。在 Bash 中,我可以通过以下方式轻松实现:
ln -s /home/guest/dir1/* /home/guest/dir2/
但是在 python 中使用os.symlink 我得到一个错误:
>>> os.symlink('/home/guest/dir1/*', '/home/guest/dir2/')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 17] File exist
我知道我可以使用subprocess 并运行ln 命令。我不想要那个解决方案。
我也知道使用os.walk 或glob.glob 的解决方法是可能的,但我想知道是否可以使用os.symlink 来做到这一点。
【问题讨论】:
-
我 认为
os.symlink仅仅是相应系统调用的包装器(嗯,或多或少),因此不会提供与完整的系统调用相同的语义-使用该系统调用的成熟实用程序。 -
“我想使用
os.symlink”要求的原因是什么?如果正确的做法是在glob上循环for,那么您为什么不想做正确的事情呢? -
@abarnert 如果必须,我会这样做。我想知道
os.symlink是否有办法做到这一点。我以为它会提供ln -s所做的一切,但事实证明它没有。 -
@jurgenreza:你仍然错过了关键点:你正在寻找的不是
ln -s所做的,而是 shell 所做的。跨度> -
@0xC0000022L:我并没有纠正你,而是消除了你的“我认为”前缀留下的任何疑问。