You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中批量重命名子文件夹内的分州Shapefile

批量重命名州级Shapefile文件脚本方案

嘿,我太懂这种“理论上简单实操却卡壳”的滋味了!别慌,咱用个简单的Python脚本就能一次性搞定所有Shapefile的重命名,把那些乱码文件名换成对应的州名,完美匹配你的文件夹结构。

先确认你的文件夹结构

假设你的文件组织是这样的(跟你描述的一致):

places/
├── Iowa/
│   ├── gz_2010_53_160_00_500k.shp
│   ├── gz_2010_53_160_00_500k.shx
│   ├── gz_2010_53_160_00_500k.dbf
│   └── gz_2010_53_160_00_500k.prj
├── Kansas/
│   ├── ...(类似乱码命名的Shapefile文件)
└── ...(其他5个州的文件夹)

直接用这个Python脚本搞定

import os

# 替换成你的"places"文件夹实际路径,Windows路径用双反斜杠或原始字符串(比如r"C:\xxx\places")
root_dir = "./places"

# 遍历每个州的子文件夹
for state_folder in os.listdir(root_dir):
    state_path = os.path.join(root_dir, state_folder)
    # 跳过非文件夹的项目
    if not os.path.isdir(state_path):
        continue
    
    # 取文件夹名作为州名(就是我们要用来重命名的前缀)
    state_name = state_folder
    
    # 遍历子文件夹里的所有文件
    for filename in os.listdir(state_path):
        file_path = os.path.join(state_path, filename)
        # 跳过嵌套的子文件夹
        if os.path.isdir(file_path):
            continue
        
        # 拆分文件名和后缀
        _, ext = os.path.splitext(filename)
        
        # 只处理Shapefile相关的后缀,你可以根据自己的文件情况增减
        valid_shp_extensions = ['.shp', '.shx', '.dbf', '.prj', '.sbn', '.sbx', '.cpg', '.shp.xml']
        if ext.lower() not in valid_shp_extensions:
            continue
        
        # 生成新文件名:州名+原后缀
        new_filename = f"{state_name}{ext}"
        new_file_path = os.path.join(state_path, new_filename)
        
        # 执行重命名
        os.rename(file_path, new_file_path)
        print(f"已完成重命名:{filename} → {new_filename}")

print("所有Shapefile文件重命名操作完成!")

几个重要的注意事项

  • 先备份! 运行脚本前一定要把整个places文件夹复制一份备份,避免脚本出错导致文件丢失
  • 确保每个州的子文件夹里只有一套Shapefile文件,如果有多个同后缀的文件(比如两个.shp),重命名会直接覆盖,提前检查清楚
  • 如果你的文件夹里还有其他无关文件,脚本会自动跳过,因为我们只指定了Shapefile相关的后缀

内容的提问来源于stack exchange,提问作者winitheju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:54:43