我在Linux上的目录中有文件列表:
files 1.pdf
files 2.pdf
files.pdf
files 3.pdf
我在列表中分配了所有内容:
>>> files_destino = [f for f in os.listdir("./espacio/")]
当我进行for循环时,即使它有空格,它也会列出文件。
>>> for i in files_destino:
... print i
...
files 1.pdf
files 2.pdf
files.pdf
files 3.pdf
但是,当我尝试对它们执行“ cp”或“ rsync”或任何其他命令时,除了没有空格的命令外,它们似乎不存在。
>>> for i in files_destino:
... subprocess.call(["cp","-v",i,"/tmp/"])
...
cp: files 1.pdf: No such file or directory
1
cp: files 2.pdf: No such file or directory
1
files.pdf -> /tmp/files.pdf
0
cp: files 3.pdf: No such file or directory
1
这种行为有什么原因吗?
谢谢
这是建议的输出。
>>> subprocess.call(["cp","-v",'"'+i+'"',"/tmp/"])
cp: "files 1.pdf": No such file or directory
1
>>> subprocess.call(["cp","-v",'"{}"'.format(i),"/tmp/"])
cp: "files 1.pdf": No such file or directory
1
cp: files 1.pdf: No such file or directory
该文件files 1.pdf
不在当前目录内。它位于您列出的目录中./espacio/
。如果可行files.pdf
,那只是因为巧合的是files.pdf
,curcur目录中还包含一个内部目录。
parent_path = './espacio/'
for file_name in os.listdir(parent_path):
file_path = os.path.join(parent_path, file_name)
subprocess.call(["cp", "-v", file_path ,"/tmp/"])
但是,正如@Colonel Thirty 22所评论的那样,通常最好在Python中进行复制,而不是在可能的情况下使用shell命令。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句