我正在尝试使用简单的python脚本在桌面上重命名一组pdf文件。我不是很成功。我目前的代码是:
import os,subprocess
path = "/Users/armed/Desktop/"
for file in os.listdir(path)
command = ['mv', '*.pdf' , 'test.pdf'] // mv Command to rename files to test.pdf
subprocess.call(command)
此代码获得的输出为1,文件未重命名。在终端中执行时,相同的命令有效。我正在使用Mac(如果这有任何帮助)
答案 0 :(得分:6)
在终端中执行相同的命令。
除了不相同的命令。代码正在运行:
'mv' '*.pdf' 'test.pdf'
但是当你输入它时它会运行:
'mv' *.pdf 'test.pdf'
不同之处在于shell在执行*
之前会对mv
通配符进行全局操作。您可以使用glob
模块模拟其功能。
答案 1 :(得分:1)
默认情况下,Python不会在字符串中展开shell通配符。您也可以在没有子进程的情况下执行此操作。但是您的代码将丢失除最后一个之外的所有pdf文件。
from glob import glob
import os
path = "/Users/armed/Desktop/"
os.chdir(path)
for filename in glob("*.pdf"):
os.rename(filename, "test.pdf")
但我确信这不是你真正想要的。你需要一个更好的目的地名称。