我想把一些文件从一个目录复制到另一个目录。我希望一个目录中的所有文件都位于另一个目录的根目录中。你知道吗
当我在终端中运行此命令时,它正是我想要的:
cp -rv ./src/CopyPasteIntoBuildDir/* ./build-root/src/
然而,这行python会像上面的命令一样复制大多数文件,但会留下一些新文件为空。具体来说,子目录中的文件是空的。你知道吗
subprocess.check_call("cp -rv ./src/CopyPasteIntoBuildDir/* ./build-root/src/", shell=True)
如果文件不在那里,它会创建文件,如果在那里,它会截断文件。你知道吗
怎么回事?你知道吗
假设您决定使用
cp
而不是本机Python操作如果将此代码编写为而不调用任何shell,则此代码将更加可靠。为了避免在源代码上使用
/*
(以及此操作的副作用,即拒绝复制名称超过ARG_MAX
组合环境和命令行大小存储限制的目录),请使用.
作为要复制内容的目录名称的最后一个元素,而不是传递需要由shell展开的通配符。你知道吗使用
cp -R
而不是cp -rv
是因为-R
,而不是-r
,这是POSIX标准化的(因此可以在所有兼容的UNIXlike平台上移植)。你知道吗实际演示(可复制/可粘贴代码)
…输出类似于:
…显示内容被正确地递归复制,没有前缀。你知道吗
显然这是
sh
的问题。改用bash是可行的。你知道吗编辑:见接受答案!
相关问题 更多 >
编程相关推荐