代码改变世界

os.path.isfile的错误

2017-06-13 14:36  很大很老实  阅读(1372)  评论(0编辑  收藏  举报

今天写了一个程序,读取子目录(source)下的所有文件,然后转换。

程序一部分代码如下:

def DtoTab(dsrc, dtarget):
    try:
        for item in os.listdir(dsrc):
            if os.path.isfile(item):
                print('ok')

然后发现,找不到文件。

最后发现,item读取出来的额,只是文件名,而isfile判断的时候,就在py的workdir下面寻找,所以,失败。修改如下:

 

def DtoTab(dsrc, dtarget):
    try:
        for item in os.listdir(dsrc):
           
            fullfilename=os.path.join(dsrc,item)
            if os.path.isfile(fullfilename) and item.endswith('.txt'):
                print('开始处理文件:{}'.format(item))
                dfilename = os.path.join(dtarget,item)
                ftarget = codecs.open(dfilename, 'w', encoding='utf-8')
                icount = 0
                for line in open(fullfilename, encoding='utf8'):
                    line = line.replace(',', '\t')
                    icount = icount + 1
                    ftarget.write(line)
                ftarget.close()
                print('处理完毕文件:{};总计{}行'.format(item, icount))

    except Exception as e:
        print('出错啦,错误信息是:{}'.format(traceback.format_exc()))