我需要为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
创建一个符号链接。
ln -s
创建多个符号链接(如果它的最后一个参数是目录,并且有多个源)。Python等效项如下所示:
dst = args[-1]
for src in args[:-1]:
os.symlink(src, os.path.join(dst, os.path.dirname(src)))
那么,当您这样做时它如何工作ln -s /home/guest/dir1/* /home/guest/dir2/
?您的 外壳
通过将通配符转换为多个参数来实现此目的。如果你是刚刚exec
的ln
命令使用通配符,它会寻找一个单一来源字面上命名*
中/home/guest/dir1/
,在该目录中没有的所有文件。
Python等效项是这样的(如果您不介意将两个级别混合在一起,而忽略了许多其他情况,例如shell可能出现的波浪号,env变量,命令替换等):
dst = args[-1]
for srcglob in args[:-1]:
for src in glob.glob(srcglob):
os.symlink(src, os.path.join(dst, os.path.dirname(src)))
您不能os.symlink
仅凭它的一部分来做到这一点,因为它不能做到这一点。这就像在说:“我想做的事情等同于find . -name foo
使用os.walk
而不过滤名称”。或者,就这一点而言,我想做的事情就等于ln -s /home/guest/dir1/* /home/guest/dir2/
不让我的外壳出现问题。”
正确的答案是使用glob
,或者fnmatch
,或者os.listdir
加上一个正则表达式,或任何你喜欢的。
千万 不能 使用os.walk
,因为做了 递归 文件系统的步行路程,所以它甚至还没有接近外壳*
扩展。
Python3 OS 文件/目录方法 概述 os.symlink() 方法用于创建一个软链接。 语法 symlink()方法语法格式如下: os.symlink(src, dst) 参数 src -- 源地址。 dst -- 目标地址。 返回值 该方法没有返回值。 实例 以下实例演示了 symlink() 方法的使用: #!/usr/bin/python3 import os src =
hadoop HDFS中有吗? 例如: 我只想将文件从复制到。 最简单的方法是使用。 但要花费更多的时间和磁盘空间。是否有类似shell的方法,如?
这些函数通常给出一个结果的无理数,可能是通过泰勒级数计算的,但有没有关于这些级数重复多少次的文献 我想如果这是罪: < code>n应该是什么?< br >我需要这个,因为我需要自己创建数学函数,所以我应该知道这些操作应该重复多少次。谢谢
然而,有一个错误发生了,我确实找到了一个解决方案,但它是暂时的。 当我运行使用的Python脚本时,抛出以下错误消息: 失败 但是,如果我在VM运行时输入该命令(),它确实可以使事情正常工作!然而,这并不能解决我的问题,因为我需要它在启动时是ok的,而如果我重新进入VM,问题又回来了。 我的DockerFile:
如果要想说清楚 ln 命令,则必须先解释下 ext 文件系统(Linux 文件系统)是如何工作的。我们在前面讲解了分区的格式化就是写入文件系统,而我们的 Linux 目前使用的是 ext4 文件系统。如果用一张示意图来描述 ext4 文件系统,则可以参考图 1。 图 1 ext4 文件系统示意图 ext4 文件系统会把分区主要分为两大部分(暂时不提超级块):小部分用于保存文件的 inode (i
本文向大家介绍Python math库 ln(x)运算的实现及原理,包括了Python math库 ln(x)运算的实现及原理的使用技巧和注意事项,需要的朋友参考一下 这个是很有用的一个运算,除了本身可以求自然对数,还是求指数函数需要用到的基础函数。 实现原理就是泰勒展开,最简单是在x=1处进行泰勒展开: 但该函数离1越远越难收敛,同时大于2时无法收敛,所以需要进行换元,然后重新展开: 但是该换元