python之工作举例:通过复制NC文件来造数据
# 通过对NC文件复制来造数据
import os, shutil # 遍历的根目录
root_dir = "D:\\test_data\\DISASTER\\"
# 获取NC文件的时间
time_source = ''
# 生成NC文件的时间
time_new = '' def get_dir_path(dir_name, time_str):
'''
组装目录结构
:param dir_name:文件名
:param time_str:时间字符串,如“20161228080000”
:return:目录路径
'''
dir_path = root_dir + dir_name + '\\' + time_str[0:4] + '\\' + time_str[0:6] + '\\' + time_str[0:8] + '\\'
return dir_path def get_new_file_name(source_file_name, time_source, time_new):
'''
根据源文件和时间生成新的文件名称
:param source_file_name:源文件名
:param time_source:源文件时间
:param time_new:新文件时间
:return: 新的文件名
'''
list_pices = source_file_name.split('_')
# print(list_pices)
new_file_name = list_pices[0]
for s in list_pices[1:]:
if s == time_source:
# print(s)
new_file_name += '_' + time_new
else:
new_file_name += '_' + str(s)
print("源文件名:", source_file_name)
print("新文件名:", new_file_name)
return new_file_name def copy_file(source_file, new_file_name, new_dir):
'''
拷贝文件,并检查文件是否存在
:param source_file: 原文件完整路径包含目录路径和文件名
:param new_file_name: 新文件名称
:param new_dir: 新文件目录路径
:return: 无
'''
if os.path.exists(new_dir):
print("目标目录已存在:", new_dir)
else:
print('目标目录新建成功!', new_dir)
os.makedirs(new_dir) # 创建多级目录
# 复制文件
new_whole_file = new_dir + new_file_name
shutil.copy(source_file, new_whole_file)
if os.path.exists(new_whole_file):
print("文件复制成功!", new_whole_file)
else:
print("文件复制失败!", new_whole_file) def find_and_copy_nc(root_dir, time_source, time_new):
'''
遍历获取需要拷贝的原NC文件
拷贝到新目录下
:param root_dir: 文件根目录
:param time_source: 源文件时间
:param time_new: 目标文件时间
'''
# 遍历根目录,获取天气现象文件夹列表
dir_list = os.listdir(root_dir)
for dir in dir_list:
'''遍历各天气现象要素目录'''
print('#' * 25)
print(dir)
# 组装源NC文件父目录路径
parent_dir = get_dir_path(dir, time_source)
print("源目录路径:", parent_dir)
new_dir = get_dir_path(dir, time_new)
print("目标目录路径:", new_dir)
try:
'''
获取NC文件目录下的文件列表
目录不存在就退出循环
'''
file_list = os.listdir(parent_dir)
except:
print("源目录不存在:", parent_dir)
continue for source_file_name in file_list:
'''遍历NC文件列表'''
if source_file_name.count(time_source) > 0:
print('-' * 20)
# print("源文件名:", source_file_name)
new_file_name = get_new_file_name(source_file_name, time_source, time_new)
# print("目标文件名:", new_file_name)
copy_file(parent_dir + source_file_name, new_file_name, new_dir) find_and_copy_nc(root_dir, time_source, time_new)
python之工作举例:通过复制NC文件来造数据的更多相关文章
- Python之shutil模块(复制移动文件)
		
用python实现将某代码文件复制/移动到指定路径下.场景例如:mv ./xxx/git/project1/test.sh ./xxx/tmp/tmp/1/test.sh (相对路径./xxx/tmp ...
 - python从一个目录中复制全部文件图片至另一个目录中,及删除指定目录中的图片
		
import shutil import os #目录自己改一下即可,复制 path = "./static/imgs/" new_path = "./static/up ...
 - python 每日一练: 读取log文件中的数据,并画图表
		
之前在excel里面分析log数据,简直日了*了. 现在用python在处理日志数据. 主要涉及 matplotlib,open和循环的使用. 日志内容大致如下 2016-10-21 21:07:59 ...
 - java读取nc文件的问题,前端ajax 发送参数进行交互的实例
		
1.问题背景: 需要解析nc文件的数据源,获取一个三维数据,并计算器开发值. java 后台处理: 定以一个实例来接收解析的数据并返回给前端. package cn.edu.shou.domain; ...
 - 制作nc文件(Matlab)
		
首先看一个nc文件中包含哪些部分,例如一个标准的 FVCOM 输入文件 wind.nc: netcdf wind { dimensions: nele = 36858 ; node = 18718 ; ...
 - Python批量复制迁移文件夹
		
前言 Python可以利用shutil库进行对文件夹,文件的迁移.而在本次的实践当中,难点在于目标文件夹的名称和数据源文件夹的名称,需要利用 工作单位提供的中间数据去进行对比连接起来. 例如:目标源的 ...
 - python第六篇:Python复制超大文件、复制二进制文件
		
Python文件复制 # 写程序实现复制文件的功能 # 要求: # 1. 源文件路径和目标文件路径需要手动输入 # 2. 要考虑文件关闭的问题 # 3. 要考虑复制超大文件的问题 # 4. 要能复制二 ...
 - Python脚本:linux上将筛选的文件夹复制到另一个目录,保存目录结构以及文件和文件夹操作方法
		
import os,shutil def newDir(dir_path): if not os.path.exists(dir_path): os.makedirs(dir_path) def co ...
 - Python学习(九)IO 编程 —— 文件夹及文件操作
		
Python 文件夹及文件操作 我们经常会与文件和目录打交道,对于这些操作,python可以使用 os 及 shutill 模块,其中包含了很多操作文件和目录的函数. os 可以执行简单的文件夹及文件 ...
 
随机推荐
- Qt+QGIS二次开发:QGIS里的编程模型
			
项目(QgsProject) 用于读写项目状态 图层分组(QgsLayerTreeGroup) 项目树的分组节点,用来存放图层节点. 图层节点(QgsLayerTreeLayer) 项目树的图层节点. ...
 - 【Codeforces Round 1110】Codeforces Global Round 1
			
Codeforces Round 1110 这场比赛只做了\(A\).\(B\).\(C\),排名\(905\),不好. 主要的问题在\(D\)题上,有\(505\)人做出,但我没做出来. 考虑的时候 ...
 - docker核心概念(镜像、容器、仓库)及基本操作
			
概要 docker是一种linux容器技术.容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求.可简单理解为一种沙盒 .每个容器内运行一个应用,不同的容 ...
 - linux中断源码分析 - 初始化(二)
			
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本篇文章主要讲述源码中是如何对中断进行一系列的初始化的. 回顾 在上一篇概述中,介绍了几个对于中断来说非常重要的 ...
 - pycharm  取消 rebase  操作
			
291/5000 取消rebase操作从主菜单中选择VCS | Git | 中止重新定位(abrot rebasing)如果rebase在两个或多个本地存储库中启动,则会显示“中止重新排序”对话框. ...
 - 【webstorm】注册码 更新笔记
			
20190225 1.修改hosts文件,windows的hosts文件路径是 C:\ Windows \ System32 \ drivers \ etc \ hosts 0.0.0.0 acco ...
 - React-将元素渲染到 DOM 中
			
首先我们在一个 HTML 页面中添加一个 id="root" 的 <div>,在此 div 中的所有内容都将由 React DOM 来管理,所以我们将其称之为 “根” ...
 - Scala学习(七)练习
			
控制结构和函数 1. 编写示例程序,展示为什么 package com.horstmann.impatient 不同于 package com package horstmann package im ...
 - 【APIO2016】烟火表演
			
题面 题解 神仙题目啊QwQ 设\(f_i(x)\)表示以第\(i\)个点为根的子树需要\(x\)秒引爆的代价. 我们发现,这个函数是一个下凸的一次分段函数. 考虑这个函数合并到父亲节点时会发生怎样的 ...
 - 使用Hexo+Github搭建属于自己的博客(基础)
			
前言 hexo是一个台湾人做的基于Node.js的静态博客程序,优势是生成静态文件的速度非常快,支持markdown, 我最终选定它的原因是它速度快而且不容易出错,并且可以一键部署到github或者其 ...