沙茶酱的小窝
沙茶酱的小窝

遥感笔记 | 某项目的一些目录归档用代码

某项目的一些目录归档用代码

2024.08.22

这里保存一些在负责某项目数据整理归档中用到的一些实用代码,以防万一未来还用得上,于此存档备考。

遍历磁盘汇总数据目录

遍历指定磁盘,将以某种前缀或某种格式后缀的文件写入一个索引CSV,保存在指定目录下。

import os
import csv

# 定义要查找的文件前缀和格式
prefix = "ABCDEFG" #定义前缀
extensions = [".zip", ".rar", ".7z", ".tar", ".gz", ".tif"] #定义拓展名

# 定义要遍历的盘符
drive = "G:\\" #指定遍历盘符

# 定义输出文件
output_file = "D:\\Directory\\Disk_G_index.csv" #指定输出目录

# 遍历目录并查找符合条件的文件
def find_files():
    file_info = []
    for root, dirs, files in os.walk(drive):
        current_dir_files = []
        for file in files:
            if file.startswith(prefix) and any(file.endswith(ext) for ext in extensions):
                current_dir_files.append((file, root))
        if current_dir_files:
            dir_info = root.replace(drive, drive + os.sep)
            file_info.append((dir_info, current_dir_files))
    return file_info

# 将文件信息写入CSV
def write_to_csv(file_info):
    with open(output_file, mode='w', newline='', encoding='utf-8-sig') as csvfile:
        csv_writer = csv.writer(csvfile)
        for dir_info, files in file_info:
            # 获取目录名
            dir_name = os.path.basename(dir_info.rstrip(os.sep))
            # 先写入一个空行
            csv_writer.writerow([])
            # 再写入目录位置
            csv_writer.writerow([dir_info])
            for file_name, file_path in files:
                # 获取文件后缀
                file_ext = os.path.splitext(file_name)[1]
                # 写入文件后缀、文件名、目录名、目录位置
                csv_writer.writerow([file_ext, file_name, dir_name, file_path.replace(drive, drive + os.sep)])

if __name__ == "__main__":
    file_info = find_files()
    write_to_csv(file_info)
    print(f"Index file created at {output_file}")

为数据添加日期前缀

从数据存档包中提取日期,重新命名为以日期为前缀的数据包,便于数据按采集时间整理。如“AAAA_BBBB_CCCC_20220119_DDDD.7z”会被重新命名为“20220119_AAAA_BBBB_CCCC_20220119_DDDD.7z”。

import os
import re

# 指定文件夹路径
folder_path = r"H:\Directory\Images"

# 文件名的正则表达式模式,假设日期部分总是以2020开头
date_pattern = re.compile(r'_(2020\d{4})_')

# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
    if filename.endswith(".7z") or filename.endswith(".tar.gz"):  # 只处理以 .7z .tar.gz 结尾的文件
        match = date_pattern.search(filename)
        if match:
            date_str = match.group(1)
            new_filename = f"{date_str}_{filename}"
            old_file_path = os.path.join(folder_path, filename)
            new_file_path = os.path.join(folder_path, new_filename)
            os.rename(old_file_path, new_file_path)
            print(f"Renamed: {filename} -> {new_filename}")

print("All files have been processed.")

沙茶酱的小窝

遥感笔记 | 某项目的一些目录归档用代码
某项目的一些目录归档用代码 2024.08.22 这里保存一些在负责某项目数据整理归档中用到的一些实用代码,以防万一未来还用得上,于此存档备考。 遍历磁盘汇总数据目录 遍历指定…
扫描二维码继续阅读
2024-08-22