开发者

Python Command line execution

I am trying to rename a set of pdf files in my desktop using a simple python script. I am somehow not very successful. My current code is :

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)

The output i get f开发者_高级运维or this code is 1 and the files are not renamed. The same command works when executed in the terminal. I am using a Mac (if that helps in any way)


The same command works when executed in the terminal.

Except it's not the same command. The code is running:

'mv' '*.pdf' 'test.pdf'

but when you type it out it runs:

'mv' *.pdf 'test.pdf'

The difference is that the shell globs the * wildcard before executing mv. You can simulate what it does by using the glob module.


Python is not going to expand the shell wildcard in the string by default. You can also do this without a subprocess. But your code will lose all pdf files except the last one.

from glob import glob
import os
path = "/Users/armed/Desktop/"
os.chdir(path)
for filename in glob("*.pdf"):
    os.rename(filename, "test.pdf")

But I'm sure that's not what you really want. You'll need a better destination name.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜