def get_all_worksheet_names(path): worksheet_names = [] for root, dirs, files in os.walk(path): for file in files: if file.endswith('.xlsx'): file_path = os.path.join(root, file) wb = load_workbook(filename=file_path, read_only=True) for sheet_name in wb.sheetnames: worksheet_names.append((file, sheet_name)) return worksheet_names def write_worksheet_names_to_excel(worksheet_names, output_file): wb = Workbook() ws = wb.active for i, (file, name) in enumerate(worksheet_names): ws.cell(row=i+1, column=1, value=file) ws.cell(row=i+1, column=2, value=name) wb.save(output_file)修改這段代碼中寫入文件名時不帶後綴
时间: 2024-04-28 18:20:07 浏览: 100
修改 `write_worksheet_names_to_excel` 函数中的 `ws.cell(row=i+1, column=1, value=file)` 为 `ws.cell(row=i+1, column=1, value=os.path.splitext(file)[0])`,这样就可以只写入文件名而不带后缀名了。
相关问题
import os from openpyxl import load_workbook, Workbook def get_all_worksheet_names(path): worksheet_names = [] for root, dirs, files in os.walk(path): for file in files: if file.endswith('.xlsx'): file_path = os.path.join(root, file) wb = load_workbook(filename=file_path, read_only=True) worksheet_names.extend(wb.sheetnames) return worksheet_names def write_worksheet_names_to_excel(worksheet_names, output_file): wb = Workbook() ws = wb.active for i, name in enumerate(worksheet_names): ws.cell(row=i+1, column=1, value=name) wb.save(output_file) if __name__ == '__main__': path = r'\\pcq-smt-ftp01\smt$\CQ SMT-單板測試課\2.生產組\點檢表\新增資料夾' worksheet_names = get_all_worksheet_names(path) output_file = r'\\pcq-smt-ftp01\smt$\CQ SMT-單板測試課\2.生產組\點檢表\點檢明細\output.xlsx' write_worksheet_names_to_excel(worksheet_names, output_file)在這個代碼中將文件的名字也一起寫入相應數據的前面
如果你想在输出的 Excel 文件中同时记录每个工作表的文件名,可以将 `get_all_worksheet_names()` 函数和 `write_worksheet_names_to_excel()` 函数稍作修改,以便能够记录每个工作表所属的文件名。
你可以在 `get_all_worksheet_names()` 函数中将每个工作表所属的文件名也记录下来,例如将文件名和工作表名组成一个元组,然后将这个元组添加到 `worksheet_names` 列表中。修改后的 `get_all_worksheet_names()` 函数如下所示:
```
def get_all_worksheet_names(path):
worksheet_names = []
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith('.xlsx'):
file_path = os.path.join(root, file)
wb = load_workbook(filename=file_path, read_only=True)
for sheet_name in wb.sheetnames:
worksheet_names.append((file, sheet_name))
return worksheet_names
```
这里将文件名和工作表名组成一个元组 `(file, sheet_name)`,然后将这个元组添加到 `worksheet_names` 列表中。
接下来,在 `write_worksheet_names_to_excel()` 函数中,你需要将每个元组中的文件名和工作表名都写入到 Excel 文件中。可以将每个元组中的文件名和工作表名分别写入到第一列和第二列中。修改后的 `write_worksheet_names_to_excel()` 函数如下所示:
```
def write_worksheet_names_to_excel(worksheet_names, output_file):
wb = Workbook()
ws = wb.active
for i, (file, name) in enumerate(worksheet_names):
ws.cell(row=i+1, column=1, value=file)
ws.cell(row=i+1, column=2, value=name)
wb.save(output_file)
```
这里使用了 `enumerate()` 函数来获取 `worksheet_names` 列表中每个元组的索引 `i` 和值 `(file, name)`。然后,将文件名和工作表名分别写入到第一列和第二列中。保存 Excel 文件的代码没有变化。
这样,就可以在输出的 Excel 文件中同时记录每个工作表的文件名和工作表名。
import os import xlwt from win32com.client import Dispatch path = r'D:\softwaredata\pythondata\Findvideo30zhen' # 请替换为您的桌面路径 excel_path = path + 'result.xls' # 创建Excel文件 workbook = xlwt.Workbook(encoding='utf-8') worksheet = workbook.add_sheet('result') worksheet.write(0, 0, '文件路径') # 遍历文件夹 for root, dirs, files in os.walk('C:\\'): # 请替换为您要查询的文件夹路径 for file in files: if file.endswith('.avi'): full_path = os.path.join(root, file) try: dso = Dispatch('DSOFile.OleDocumentProperties') dso.Open(full_path) frame_rate = dso.SummaryProperties.FrameRate if frame_rate == '30.00': row = worksheet.last_used_row + 1 worksheet.write(row, 0, full_path) except: continue # 保存Excel文件这段代码有什么问题
这段代码有两个问题:
1. 在第一行的`import os`和第二行的`import xlwt`之间需要加上换行符`\n`。
2. 在第3行的`excel_path`变量中,需要在路径末尾加上文件名,即`result.xls`,否则会报错。
修改后的代码如下:
```python
import os
import xlwt
from win32com.client import Dispatch
path = r'D:\softwaredata\pythondata\Findvideo30zhen\n' # 请替换为您的桌面路径
excel_path = os.path.join(path, 'result.xls') # 添加文件名
# 创建Excel文件
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('result')
worksheet.write(0, 0, '文件路径')
# 遍历文件夹
for root, dirs, files in os.walk('C:\\'): # 请替换为您要查询的文件夹路径
for file in files:
if file.endswith('.avi'):
full_path = os.path.join(root, file)
try:
dso = Dispatch('DSOFile.OleDocumentProperties')
dso.Open(full_path)
frame_rate = dso.SummaryProperties.FrameRate
if frame_rate == '30.00':
row = worksheet.last_used_row + 1
worksheet.write(row, 0, full_path)
except:
continue
# 保存Excel文件
workbook.save(excel_path)
```
阅读全文