自己产生的一个小需求,最近需要对看过的pdf文件注释,所以就存储在同名doc文件里面好找一些,不想建立了,所以就用python写了个小文件,折腾了好久才知道哪里出错了,希望自己以后能记住,而且代码功能还不是很完善,先放在这里吧。
目前的最终代码如下:
#!usr/bin/python
import sys,os
from win32com import client as wc
word = wc.Dispatch('Word.Application')
def createdocfrompdf(dir,old,new):
if old[:1]!='.':
old = '.' + old
thelen=-len(old)
print thelen
if new[:1]!='.':
new='.'+new
for path,subdirs,files in os.walk(dir) :
for oldfile in files :
if oldfile[thelen:]==old:
print oldfile
oldfile=os.path.join(path,oldfile)
# newfile=os.path.normcase(oldfile[:thelen]+new)
newfile=oldfile[:thelen]+new
print newfile
# doc=open(newfile)
doc = word.Documents.Add()
doc.SaveAs(newfile)
word.Quit()
if len(sys.argv)!=4:
print "Usage:root dir old new"
sys.exit(100)
createdocfrompdf(sys.argv[1],sys.argv[2],sys.argv[3])
使用了pywin32模块,下载地址在 pywin32 注意要找到针对自己电脑的版本,比如我的是32位xp python 2.7.3,折腾了这么久呢,主要的原因是一直找不到文件,一开始我以为是中文文件名的问题,搞utf8和gbk编码搞了好久发现还是不行,后来才发现word.Documents.Open函数只是打开已存在的文件,那么就查到了Document.Add命令,即生成新文件,生成新文件不能直接用os.rename,因为rename是直接对字符串进行操作,所以我就直接将生成的文档saveas就可以了
这里是坛里一个处理中文文件名的讨论,没有仔细研究,有兴趣的大家可以看看
使用方法
python a.py "E:\My Documents\" pdf doc
当然目前我还是有一个疑问没有解答,毕竟很久没有碰python程序了,就是我在cmd控制台下直接在文件所在路径下进入python环境,居然说找不到a.py,即我运行
a.py "E:\My Documents\" pdf doc
居然提示我找不到a.py文件 很囧 或者在"E:\My Documents\" 下说invalid syntax,我想这种问题可能大家都解决过吧,所以google也没有找到过对应的答案,很希望有人能解答。
O ,关于要增加的功能,比如检测是否已经存在同名文件等等