| 
 | 
 
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
以下是一个用Python编写的文件目录导出程序,可以将指定目录下的文件结构导出为文本、CSV或JSON格式: 
 
python 
 
import os 
import sys 
import argparse 
import csv 
import json 
from datetime import datetime 
 
def get_file_info(root_path, include_metadata=True): 
    """遍历目录并收集文件信息""" 
    file_list = [] 
    for root, dirs, files in os.walk(root_path): 
        for name in files + dirs: 
            full_path = os.path.join(root, name) 
            file_info = { 
                "path": full_path, 
                "name": name, 
                "type": "directory" if os.path.isdir(full_path) else "file", 
            } 
             
            if include_metadata and file_info["type"] == "file": 
                try: 
                    stat = os.stat(full_path) 
                    file_info.update({ 
                        "size": stat.st_size, 
                        "modified": datetime.fromtimestamp(stat.st_mtime).isoformat(), 
                        "created": datetime.fromtimestamp(stat.st_ctime).isoformat(), 
                    }) 
                except Exception as e: 
                    print(f"无法读取 {full_path} 的元数据: {e}", file=sys.stderr) 
             
            file_list.append(file_info) 
    return file_list 
 
def export_text(data, output_file): 
    """导出为文本格式""" 
    max_path = max(len(item["path"]) for item in data) + 2 
    header = f"{'路径':<{max_path}} {'类型':<10} {'大小':>10} {'修改时间':<25}" 
     
    with open(output_file, "w", encoding="utf-8") as f: 
        f.write(header + "\n") 
        f.write("-" * len(header) + "\n") 
         
        for item in data: 
            line = f"{item['path']:<{max_path}} {item['type']:<10}" 
            if "size" in item: 
                line += f" {item['size']:>10} {item['modified']:<25}" 
            f.write(line + "\n") 
 
def export_csv(data, output_file): 
    """导出为CSV格式""" 
    with open(output_file, "w", newline="", encoding="utf-8") as f: 
        writer = csv.writer(f) 
        writer.writerow(["Path", "Name", "Type", "Size (bytes)", "Modified", "Created"]) 
         
        for item in data: 
            writer.writerow([ 
                item["path"], 
                item["name"], 
                item["type"], 
                item.get("size", ""), 
                item.get("modified", ""), 
                item.get("created", ""), 
            ]) 
 
def export_json(data, output_file): 
    """导出为JSON格式""" 
    with open(output_file, "w", encoding="utf-8") as f: 
        json.dump(data, f, indent=2, ensure_ascii=False) 
 
def main(): 
    parser = argparse.ArgumentParser(description="文件目录导出工具") 
    parser.add_argument("directory", help="要导出的目录路径", nargs="?", default=".") 
    parser.add_argument("-o", "--output", help="输出文件名(默认:directory_structure.[ext])") 
    parser.add_argument("-f", "--format", choices=["txt", "csv", "json"], default="txt", 
                        help="输出格式(默认:txt)") 
    parser.add_argument("-m", "--metadata", action="store_true", 
                        help="包含文件元数据(大小、修改时间等)") 
 
    args = parser.parse_args() 
 
    if not os.path.isdir(args.directory): 
        print(f"错误:目录不存在 - {args.directory}") 
        sys.exit(1) 
 
    output_file = args.output or f"directory_structure.{args.format}" 
    data = get_file_info(args.directory, args.metadata) 
 
    try: 
        if args.format == "txt": 
            export_text(data, output_file) 
        elif args.format == "csv": 
            export_csv(data, output_file) 
        elif args.format == "json": 
            export_json(data, output_file) 
         
        print(f"成功导出到 {output_file}") 
    except Exception as e: 
        print(f"导出失败: {e}") 
        sys.exit(1) 
 
if __name__ == "__main__": 
    main() 
 
 
功能特点: 
支持三种输出格式:文本、CSV、JSON 
 
可递归遍历子目录 
 
可选包含文件元数据(大小、修改时间等) 
 
自动处理路径异常 
 
支持中文字符编码 
 
友好的命令行界面 
 
使用方法: 
基本用法: 
 
bash 
python directory_exporter.py [目录路径] 
指定输出格式: 
 
bash 
python directory_exporter.py /path/to/dir -f csv 
包含元数据: 
 
bash 
python directory_exporter.py /path/to/dir -m 
自定义输出文件名: 
 
bash 
python directory_exporter.py /path/to/dir -o custom_output.csv -f csv 
输出示例(文本格式): 
路径                                          类型        大小     修改时间 
----------------------------------------------------------------------- 
./test_dir                                  directory                   
./test_dir/file1.txt                        file           1024 2023-08-20T15:30:45 
./test_dir/subdir                           directory                   
./test_dir/subdir/image.jpg                 file        2048000 2023-08-20T15:31:12 
 
注意事项: 
需要Python 3.6+环境 
 
处理大量文件时可能需要较长时间 
 
某些系统文件可能需要管理员权限才能访问 
 
JSON格式输出会保留所有元数据信息 
 
可以根据需要扩展以下功能: 
 
添加Excel格式支持 
 
增加文件过滤选项 
 
添加文件哈希值计算 
 
支持树状结构显示 
 
添加进度条显示 |   
 
 
 
 |