Chinaunix

标题: python 循环读取多个excel时出错。 [打印本页]

作者: luiszhu    时间: 2013-11-08 08:40
标题: python 循环读取多个excel时出错。
有两个文件,文件名不同,内容格式相同,如果只有一个文件是可以得,但放两个文件的话,第二个文件会出错。  error is __import__() argument 1 must be string without null bytes, not str

两文件名
CN SU HC Report(FW15).xls
CN WX HC Report(FW16).xls

--------------------
部分代码..
if __name__ == "__main__":  
# Import HC data to database
    result=[]
    findfiles(r'D:\Tableau_Report\HR','CN * HC*.xls')
    for filename in result:
        print filename
        readHC(filename)
--------------------

结果:
> "C:\Python27\python.exe" -u "D:\Tableau_Report\HC.py"
CN SU HC Report(FW15).xls
('Suzhou', '38766', 'AN, 'Male', '2006-07-11', '2006-07-11', 'Employee', '38889', Coronado', 'Indirect', 'SUCH-N', 'Asia Engineering ', 'Drive Operations', '14034', 'Sr Engineer')
CN WX HC Report(FW16).xls
open D:\Tableau_Report\HR\CN WX HC Report(FW16).xls error, error is __import__() argument 1 must be string without null bytes, not str

作者: icymirror    时间: 2013-11-08 09:29
有个问题,从错误信息上来看,如果是出错的话,是出现在你的readHC(filename)函数中的读写过程中,跟现在这段代码没有什么太大的关系。
作者: icymirror    时间: 2013-11-08 09:48
回复 1# luiszhu


    如果可能的话,建议把readHC(filename)的那段代码也贴上来,方便别人帮助你找问题。
作者: luiszhu    时间: 2013-11-08 10:31
读没有问题,第一个文件已经读出来了,如果在目录中只有一个文件就不会有错,不管是哪个文件,但是有多个文件时,只能执行完第一个文件。用xlrd打开excel文件。 xlrd也没有关闭文件的方法。

import xlrd as ExcelRead  

部分readHC函数代码。

def readHC(file_name):
    if os.path.exists(os.path.join('D:\Tableau_Report\HR',file_name)):      
        try:  
            xls = ExcelRead.open_workbook(os.path.join('D:\Tableau_Report\HR',file_name))  
            sheet = xls.sheet_by_index(0)  
        except Exception, e:  
            print "open %s error, error is %s" %(os.path.join('D:\Tableau_Report\HR',file_name), e)  
            return
    else:
        print "open %s error, file not exist!" %(os.path.join('D:\Tableau_Report\HR',file_name))
        return   
作者: icymirror    时间: 2013-11-08 12:30
回复 4# luiszhu


    用这个可以看下代码,呵呵:print(inspect.getsource(xlrd.open_workbook)),发现是对book的操作
同样方法,再进去下,有个方法:release_resources,不过没有去实验。
你可以试下能不能用它来释放资源。
作者: luiszhu    时间: 2013-11-08 20:57
不懂怎么用,能否详细一点告知。谢谢!
作者: luiszhu    时间: 2013-11-11 09:31
找到问题了,是我的机器有问题, 换了台机器就好了,
我的机器是win7 64bit.
作者: icymirror    时间: 2013-11-11 13:27
:wink: 恭喜问题解决。
呵呵,因为周末不上线,不知道后续情况。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2