站点数据批量重命名脚本
在处理 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 | bjfs: beij |
在该配置文件中,配置将 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 中的输出信息显示。