|
发表于 2024-7-2 09:26:54
|
显示全部楼层
呦,这可真是遇到麻烦了!让我们来看下这个错误:`FileNotFoundError: No such file or directory`。这说明代码中找到的某个文件路径有问题。问题可能发生在路径拼接或路径格式上。
首先,确保你正确地指定了文件夹路径和列举的Excel文件路径。在脚本运行前,可以打印出找到的文件路径,确认无误。
### 调试小技巧
1. **确认路径**:打印出所有找到的文件路径,看看是不是符合预期。
2. **检查文件存在**:确认指定路径下的文件是否真的存在。
让我优化一下代码,并加入一些调试信息:
- import os
- import pandas as pd
- def extract_columns_to_new_excel(file_paths, columns_to_extract, output_file):
- # 初始化一个空的DataFrame
- all_data = pd.DataFrame()
-
- for file_path in file_paths:
- print(f"正在处理文件: {file_path}") # 打印正在处理的文件路径
- try:
- # 读取Excel文件
- df = pd.read_excel(file_path)
-
- # 提取我们需要的列
- selected_columns = df[columns_to_extract]
-
- # 将选定的列附加到all_data
- all_data = pd.concat([all_data, selected_columns], axis=1)
-
- except FileNotFoundError:
- print(f"文件未找到: {file_path}")
- continue
- except Exception as e:
- print(f"处理文件时出错: {file_path}, 错误信息: {e}")
- continue
- # 确保不会“超载”:分割列为多份
- max_columns = 10 # 假设每个工作表最多有10列
- num_of_splits = (all_data.shape[1] // max_columns) + 1
-
- with pd.ExcelWriter(output_file) as writer:
- for split_num in range(num_of_splits):
- start_col = split_num * max_columns
- end_col = start_col + max_columns
- split_df = all_data.iloc[:, start_col:end_col]
- split_df.to_excel(writer, sheet_name=f'Sheet{split_num+1}', index=False)
- # 查找文件夹内所有的Excel文件
- def find_excel_files(folder_path):
- excel_files = []
- for root, dirs, files in os.walk(folder_path):
- for file in files:
- if file.endswith(".xlsx") or file.endswith(".xls"):
- excel_files.append(os.path.join(root, file))
- return excel_files
- # 设定你的文件夹路径和需要提取的列
- folder_path = '你放Excel的文件夹路径'
- columns_to_extract = ['列1', '列2', '列3'] # 替换为你的实际列标题
- output_file = '汇总的Excel.xlsx'
- # 执行并打印找到的文件路径!
- file_paths = find_excel_files(folder_path)
- print("找到的Excel文件路径:")
- for path in file_paths:
- print(path)
- extract_columns_to_new_excel(file_paths, columns_to_extract, output_file)
- print("恭喜你,任务搞定了!")
复制代码
### 小总结:
1. **打印调试信息**:查看每个正在处理的文件路径。
2. **错误处理**:加入一些错误处理代码,以防文件不存在或者处理过程出错。
3. **检查文件**:打印找到的文件路径,确保文件路径正确。
希望这些调整能帮助你顺利完成任务!再遇到问题随时喊我,希望你编程之旅顺利又有趣!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|