Python命令行执行
我正在尝试用一个简单的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 个回答
1
默认情况下,Python不会自动处理字符串中的通配符,比如星号(*)这样的符号。你也可以不使用子进程来实现这个功能。不过,如果这样做,你的代码会把除了最后一个以外的所有PDF文件都丢掉。
from glob import glob
import os
path = "/Users/armed/Desktop/"
os.chdir(path)
for filename in glob("*.pdf"):
os.rename(filename, "test.pdf")
但我相信这不是你真正想要的结果。你需要一个更好的目标文件名。
6
在终端执行时,同样的命令可以正常工作。
但实际上这不是完全相同的命令。代码运行的是:
'mv' '*.pdf' 'test.pdf'
但是当你自己输入时,它运行的是:
'mv' *.pdf 'test.pdf'
这两者的区别在于,命令行会在执行mv
之前处理*
这个通配符。你可以通过使用glob
模块来模拟它的工作方式。