这可行,但是外壳注入会带来安全风险
p = subprocess.Popen(['mv ./*.pdf ./target.pdf'], shell=True)
这不起作用,因为*不会引起问题
p = subprocess.Popen(['mv', './*.pdf', './target.pdf'])
我正在查看目录。如何在不影响安全性的情况下将到达的pdf重命名为target.pdf?
答案 0 :(得分:0)
这有效
import os
import shutil
source = os.listdir(os.curdir)
destination = "target.pdf"
for files in source:
if files.endswith(".pdf"):
shutil.move(files,destination)
答案 1 :(得分:0)
您可以使用glob
模块中的glob
命令来获取类似路径扩展的shell:
glob.glob(pathname, *, recursive=False)
返回与路径名匹配的可能为空的路径名列表,该路径名必须是包含路径说明的字符串。路径名可以是绝对的(例如
/usr/src/Python-1.5/Makefile
)或相对的(例如../../Tools/*/*.gif
),并且可以包含shell样式的通配符。损坏的符号链接包含在结果中(如在外壳程序中一样)。如果
recursive
为true,则模式**
将匹配任何文件以及零个或多个目录和子目录。如果模式后面跟随os.sep,则仅目录和子目录匹配。(摘自docs)
在您的情况下,它可能看起来像这样:
import shutil
import glob
sources = glob.glob('*.pdf')
destination = "target.pdf"
for file in sources:
shutil.move(file, destination)