我在Linux OS(Ubuntu 14.04 LTS)中使用IDE Spyder 2.2.5中的Python。
我正在使用实用程序ncdump
(从二进制数nc转换为源cdl格式)和ncgen
(反之亦然)编辑和创建netcdf文件。
命令ncgen file.cdl
仅检查源代码的语法。如果要创建全新的二进制文件,则必须启动ncgen -b file.cdl
。 (来源man ncgen
。)
来自Linux终端 - 如果我从命令行运行ncgen file.cdl
,现有file.nc
的时间戳不会改变(如{{1}所示}})。
这是正常的,因为cdl源上的语法控件不会创建任何新的二进制文件。
来自Python IDE - 如果我使用模块子流程(ls -lht file.nc
)从Python脚本提供相同的指令
import subprocess as sp
然后将file.nc的时间戳更新为运行它的时间。
使用方法sp.check_call(["ncgen", "file.cdl"]) # ncgen file.cdl
sp.check_call(["ls", "-lth", "file.nc"]) # ls -lth file.nc
或ncgen
调用sp.check_call()
并不重要。
此外,Linux终端也显示了这个新的时间戳,因此更改不是Python控制台的虚构。
Python脚本确实创建了一个新的sp.call()
。
但是,子进程调用会更改原则上不会触及的另一个文件file.cdl
的时间戳。
有趣的是,与此netcdf作业无关的其他文件位于同一目录中。
这些没有触及。
因此,模块子进程和命令file.nc
的组合可能是这种情况的一个因素。
我希望运行ncgen
不会触及ncgen file.cdl
的时间戳,因为它在Linux终端上运行时会发生。
在Python环境中处理时间戳令人困惑。我不知道我输出的netcdf文件有多大,并且相应地采取行动。