Python命令行执行

时间:2011-09-05 09:29:09

标签: python command-line-arguments

我正在尝试使用简单的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(如果这有任何帮助)

2 个答案:

答案 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")

但我确信这不是你真正想要的。你需要一个更好的目的地名称。