站点数据批量重命名脚本

在处理 GNSS 观测数据时,我们经常需要涉及到对数据文件的重命名处理。比如,变更观测站点名、文件名大小写转换等。虽然之前的博文文件名大小写批量转换介绍过两个 SHELL 语言编写的脚本,但这两个脚本不甚灵活且运行时需要 C SHELL 语言环境。

本文将介绍 Pinot 中涉及对观测文件重命名的三个脚本:renamesite.py、up2lower.py 和 low2upper.py。

脚本功能

本文所涉及的三个脚本及其功能如下:

  • renamesite.py:变更文件名中的站点名;
  • up2lower.py:将文件名中包含的大写字母转换为小写;
  • low2upper.py:将文件名中包含的小写字母转换为大写。

参数说明

renamesite.py

renamesite.py 脚本可以将文件名中的站点(即观测文件的前 4 个字符)进行重命名。其中原站名与新站名的对应关系通过 YAML 格式的配置文件指定。该脚本可接受以下参数:

1
$ python renamesite.py <file> [<file> ...] -out <directory> -cfg <config> [-k] [-r] [-v] [-h]

参数释义:

  • <file>:要处理的文件名,可由通配符指定;
  • -out <directory>:处理结果的输出路径,默认为源文件所在的文件夹;
  • -cfg <config>:配置文件路径。该配置文件使用 YAML 语言编写,默认为当前目录中的 _sitemap.yml 文件;
  • -r--recursive:指定 “**/” 的通配符前缀表示递归搜索子文件夹的内容,不加该参数默认为不递归;
  • -k--keep:对文件进行重命名时是否保留源文件,即以拷贝方式重命名还是以剪切的方式;
  • -v--version:显示版本信息;
  • -h--help:显示帮助信息。

up2lower.py

对文件名中的字符进行大小写转换的两个脚本:up2lower.py 和 low2upper.py,此两个脚本的所接受的参数一致。下面以 up2lower.py 为例。该脚本接受的参数如下:

1
$ python up2lower.py <file> [<file> ...] -out <directory> [-r] [-v] [-h]

参数释义:

  • <file>:要处理的文件名,可由通配符指定;
  • -out <directory>:输出文件路径。若该项目未指定,则直接对输入路径内的文件重命名;若指定了输出路径,则拷贝文件并重命名;
  • -r--recursive:指定 “**/” 的通配符前缀表示递归搜索子文件夹的内容,不加该参数默认为不递归;
  • -k--keep:处理文件时是否保留源文件,即以拷贝方式还是剪切方式,默认为剪切操作;
  • -v--version:显示版本信息;
  • -h--help:显示帮助信息。

配置文件

只有 renamesite.py 脚本需要配置文件,其格式非常简单,只需以键值对的方式指定原站名与新站名。其形式为:old: new

配置文件示例

一个配置文件示例为:

1
2
3
bjfs: beij
chan: chch
wuhn: wuh2

在该配置文件中,配置将 bjfs 站的观测数据更名为 beij,将 chan 站的观测数据更名为 chch,将 wuhn 站的观测数据更名为 wuha。

使用示例

更新 old/ 文件夹及其子文件夹内观测于 2017 年的数据的站名,其中配置文件使用当前文件夹下的 _sitemap.yml,将重命名后的观测文件保存在原文件夹内:

1
$ python renamesite.py old/**/*.17[od] -cfg _sitemap.yml -r

更新 old/ 文件夹内所有 RINEX 3 格式的观测数据的站名,其中配置文件使用当前文件夹下的 _sitemap.yml,将重命名后的观测文件复制到 new/ 文件夹内:

1
$ python renamesite.py old/*.rnx -out new -cfg _sitemap.yml -k

将 FILES/ 文件夹及其子文件夹内的所有观测文件中的大写字符转换为小写,将重命名后的文件保留在源文件夹内:

1
$ python up2lower.py FILES/**/*O FILES/**/*.rnx -r

将 FILES/ 文件夹及其子文件夹内的所有观测文件中的大写字符转换为小写,将重命名后的文件复制到 new/ 文件夹内:

1
$ python up2lower.py FILES/**/*O FILES/**/*.rnx -out new -r -k

将 FILES/ 文件夹内 2016 年第 42 至 47 年积日的观测数据文件名中的大写字符转换为小写,将重命名后的文件复制到 new/ 文件夹内:

1
$ python up2lower.py FILES/*04[2-7]0.16O -out new -r -k

下载地址

该脚本及同一工具包的其他脚本均放在 Github 网站上:purpleskyfall/pinot

修改记录

  • 2017-09-13,版本 0.2.0:
    • 去掉 -dir-glob 参数,使用位置参数指定输入文件;
    • 支持多个输入文件或通配符;
    • 支持 RINEX 3 格式的文件。
  • 2018-03-14,版本 0.2.1:
    • 优化在 UNIX/Linux 中的输出信息显示。