LK-Hulk 发表于 2021-12-13 18:34

Python for跑了一遍循环就报错了,求解!

各位大佬好,本人小白刚入门Python, 想实现文件夹内文件批量转格式,无奈排Bug 能力有限,求助!
需求,读取某文件夹下所有文件名称,xlwing读取后转换成xls格式Excel。程序跑了一遍就报错了,文件名末尾还自己添加了.csv,不知道怎么去除。
跑了一遍文件夹内能实现第一个文件转格式成功。请看附图
附上源码:
import xlwings as xwimport time
import pandas as pd
import os
import xlwt
import xlrd

file_dir='C:/Users/ASUS/Desktop/业务报告11.15-11.21'
for root,dirs,files in os.walk(file_dir):
    for a in range(0,14):
      file_dir = 'C:/Users/ASUS/Desktop/业务报告11.15-11.21'
      print('---------------分隔符')
      print(a)
      print(files)
      app=xw.App(visible=False,add_book=False)
      workbook=app.books.open(os.path.abspath(files))
      sheet=workbook.sheets[0]
      workbook.save(r'C:/Users/ASUS/Desktop/处理好的文件/%a.xls' %files)
      workbook.close()
      app.quit()
      time.sleep(5)

ReLoading 发表于 2021-12-13 18:45

LK-Hulk 发表于 2021-12-13 19:04

ReLoading 发表于 2021-12-13 18:45


那他第一遍跑的时候文件也不是在这个目录里面,第一个文件又能成,这怎么说?

lies2014 发表于 2021-12-13 19:30

把os.path.abspath(files)换成os.path.join(root, files)试试,os.path.abspath的结果不一定是你想要的:
https://blog.csdn.net/dmt103/article/details/106170431/

hello_pj 发表于 2021-12-13 20:22

LK-Hulk 发表于 2021-12-13 19:04
那他第一遍跑的时候文件也不是在这个目录里面,第一个文件又能成,这怎么说?

保存文件到其他文件夹了,就找不到路了

luyers 发表于 2021-12-14 07:50

lies2014 发表于 2021-12-13 19:30
把os.path.abspath(files)换成os.path.join(root, files)试试,os.path.abspath的结果不一定是你想要 ...

或者前面加上os.chdir(r'C:/Users/ASUS/Desktop/业务报告11.15-11.21')应该也可以

LK-Hulk 发表于 2021-12-15 16:15

luyers 发表于 2021-12-14 07:50
或者前面加上os.chdir(r'C:/Users/ASUS/Desktop/业务报告11.15-11.21')应该也可以

成功了,太感谢了。这段的意思是让程序知道工作路径。真的谢谢
页: [1]
查看完整版本: Python for跑了一遍循环就报错了,求解!