import os
import shutil
import pandas as pd
# 设置原文件夹路径和新文件夹路径
original_folder_path = r'D:\qixiangshuju\西北降水_气温数据\新疆'
new_folder_path = r'D:\qixiangshuju\新疆'
# 创建新文件夹(如果不存在)
if not os.path.exists(new_folder_path):
os.makedirs(new_folder_path)
# 获取原文件夹中所有的.xls文件
files = [file for file in os.listdir(original_folder_path) if file.endswith('.xls')]
# 循环处理每个文件
for file in files:
file_path = os.path.join(original_folder_path, file)
# 读取Excel文件
df = pd.read_excel(file_path)
# 判断年份是否在指定范围内,并且月份为1月份
df_filtered = df[((df['年'] < 1963) | (df['年'] > 2015)) & (df['月'] == 1)]
# 如果保留的数据不为空,则将文件移动到新文件夹中
if not df_filtered.empty:
# 构建新文件的路径
new_file_path = os.path.join(new_folder_path, file)
# 移动文件到新路径
shutil.move(file_path, new_file_path)
这段代码是用来筛选指定条件下的 Excel 文件,并将符合条件的文件移动到新的文件夹中。让我逐步解析这段代码:
1. `import os`, `import shutil`, `import pandas as pd`: 这些是导入所需的 Python 模块。`os` 用于操作文件和文件夹,`shutil` 用于移动文件,`pandas` 用于处理 Excel 文件。
2. `original_folder_path` 和 `new_folder_path`: 这两个变量分别指定了原始文件夹路径和新文件夹路径。
3. `if not os.path.exists(new_folder_path): os.makedirs(new_folder_path)`: 这段代码用于检查新文件夹是否存在,如果不存在则创建新文件夹。
4. `files = [file for file in os.listdir(original_folder_path) if file.endswith('.xls')]`: 这一行代码通过 `os.listdir()` 获取原文件夹中所有以 `.xls` 结尾的文件,并将它们存储在列表 `files` 中。
5. `for file in files:`: 这是一个循环,用于遍历原文件夹中的每个 Excel 文件。
6. `file_path = os.path.join(original_folder_path, file)`: 这一行代码构建了每个文件的完整路径。
7. `df = pd.read_excel(file_path)`: 这里使用 `pandas` 的 `read_excel()` 函数读取 Excel 文件,并将其存储在 DataFrame `df` 中。
8. `df_filtered = df[((df['年'] < 1963) | (df['年'] > 2015)) & (df['月'] == 1)]`: 这行代码筛选出 DataFrame 中满足条件的数据,即年份早于1963或晚于2015,且月份为1月份的数据。
9. `if not df_filtered.empty:`: 如果经过筛选的 DataFrame 不为空,即存在符合条件的数据。
10. `new_file_path = os.path.join(new_folder_path, file)`: 这一行代码构建了移动后文件的新路径。
11. `shutil.move(file_path, new_file_path)`: 使用 `shutil.move()` 函数将文件从原始路径移动到新路径。
举例说明用法:
假设原始文件夹 `D:\qixiangshuju\西北降水_气温数据\新疆` 包含了多个 Excel 文件,其中一些文件名为 `file1.xls`、`file2.xls` 等。这些文件中包含了不同年份和月份的数据。
如果 `file1.xls` 中包含了1962年1月和2016年1月的数据,而 `file2.xls` 中包含了1955年1月和2017年1月的数据。运行以上代码后,符合筛选条件的数据将被移动到新文件夹 `D:\qixiangshuju\新疆` 中。因此,`D:\qixiangshuju\新疆` 文件夹中将包含 `file1.xls` 和 `file2.xls`,而原始文件夹中将不再包含这两个文件。
import os
import shutil
import pandas as pd
# 设置原文件夹路径和新文件夹路径
original_folder_path = r'D:\qixiangshuju\西北降水_气温数据\新疆'
new_folder_path = r'D:\qixiangshuju\新疆'
# 创建新文件夹(如果不存在)
if not os.path.exists(new_folder_path):
os.makedirs(new_folder_path)
# 获取原文件夹中所有的.xls文件
files = [file for file in os.listdir(original_folder_path) if file.endswith('.xls')]
# 循环处理每个文件
for file in files:
file_path = os.path.join(original_folder_path, file)
# 读取Excel文件
df = pd.read_excel(file_path)
# 判断年份是否在指定范围内,并且月份为1月份
df_filtered = df[((df['年'] < 1963) | (df['年'] > 2015)) & (df['月'] == 1)]
# 如果保留的数据不为空,则将文件移动到新文件夹中
if not df_filtered.empty:
# 构建新文件的路径
new_file_path = os.path.join(new_folder_path, file)
# 移动文件到新路径
shutil.move(file_path, new_file_path)