在论坛里下了些光盘版的统计年鉴,由于里面的文件名都是用编号命名的,而且存在年份不同编号不同的可能,查看起来很不方便,所以有了这个想法。
# -*- coding: utf-8 -*-
import os,shutil,glob
from pyExcelerator import *
if __name__ == '__main__':
flist = glob.glob("*.xls")
# get and write the absolute path
fpath = os.path.abspath('.')
logfile = open('log.txt','w')
logfile.write(fpath + '\n')
logfile.close()
for fname in flist:
# pick name from the xls files and renaming operation
data = parse_xls(fname)
newfname = data[0][1][(0,0)].encode('utf8') + '.xls'
shutil.move(fname, newfname)
# export log
addlog = open('log.txt','a')
addlog.write(fname + ' ----> ' + newfname + '\n')
addlog.close()
实现路径:
提取年鉴xls文件的第一个工作簿的A1单元格,作为新的文件名。
脚本的基本说明:
1、由于是脚本而不是可执行文件,所以需要解释环境。目前版本是在Python2.7下完成的,除了基本宏包/模块之外还使用了pyExcelerator包。
2、脚本在linux下使用正常。MSWindows未测试,可能会存在一些问题,比如A1单元格有换行或者其它非法字符。(linux下这些都没有影响)
3、编写这个脚本的大部分时间都花在解决文字编码的问题上了,因为处理xls文件我也是第一次,原来处理文本文件都没有碰到如此“严重”的编码问题,可能是因为xls文件都在win下完成,而linux的编码与win不同的原因吧。
4、python代码是严格注意格式的(缩进)。
使用方法和功能:
1、将脚本拷贝到文本文件,后缀命名为“.py”。
2、将此py脚本文件放到需要修改文件名的目录下,用python运行该脚本。
3、脚本会历遍该目录,并以xls表格第一个工作簿的第一行第一列的内容,重命名该文件。
4、脚本会将建立log.txt文件,将当前的绝对路径以及更名前后的变化情况写入到log文本。
PS:加密的xls目前应该不适用。
在此基础上可以扩展但目前未做的功能:
1、输出实际的表格名(A1),以及指标行,到某个文件(xls、txt、cvs...)
2、加入搜索模块,输出含检索词所有文件名。
3、通过py2exe打包成二进制代码,MSWin下可以直接用。
PS1:
如果有同好有兴趣的话可以一起交流。
PS2:
写这个脚本的目的只是为了在没有网络或者是在检查数据的时候使用。收集数据还是用数据库快很多。
现在的CNKI和Bankinfo,都有很好的统计数据库。
Bankinfo(CIB)里的是文本文件,是与年鉴中的形式一样。Bankinfo比CNKI的数据更新快些。
CNKI如果购买了的话,既能在年鉴导航中直接下xls表,又能在数据分析中选取需要的数据直接输出需要的指标。