# 通过对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文件来造数据的更多相关文章

  1. Python之shutil模块(复制移动文件)

    用python实现将某代码文件复制/移动到指定路径下.场景例如:mv ./xxx/git/project1/test.sh ./xxx/tmp/tmp/1/test.sh (相对路径./xxx/tmp ...

  2. python从一个目录中复制全部文件图片至另一个目录中,及删除指定目录中的图片

    import shutil import os #目录自己改一下即可,复制 path = "./static/imgs/" new_path = "./static/up ...

  3. python 每日一练: 读取log文件中的数据,并画图表

    之前在excel里面分析log数据,简直日了*了. 现在用python在处理日志数据. 主要涉及 matplotlib,open和循环的使用. 日志内容大致如下 2016-10-21 21:07:59 ...

  4. java读取nc文件的问题,前端ajax 发送参数进行交互的实例

    1.问题背景: 需要解析nc文件的数据源,获取一个三维数据,并计算器开发值. java 后台处理: 定以一个实例来接收解析的数据并返回给前端. package cn.edu.shou.domain; ...

  5. 制作nc文件(Matlab)

    首先看一个nc文件中包含哪些部分,例如一个标准的 FVCOM 输入文件 wind.nc: netcdf wind { dimensions: nele = 36858 ; node = 18718 ; ...

  6. Python批量复制迁移文件夹

    前言 Python可以利用shutil库进行对文件夹,文件的迁移.而在本次的实践当中,难点在于目标文件夹的名称和数据源文件夹的名称,需要利用 工作单位提供的中间数据去进行对比连接起来. 例如:目标源的 ...

  7. python第六篇:Python复制超大文件、复制二进制文件

    Python文件复制 # 写程序实现复制文件的功能 # 要求: # 1. 源文件路径和目标文件路径需要手动输入 # 2. 要考虑文件关闭的问题 # 3. 要考虑复制超大文件的问题 # 4. 要能复制二 ...

  8. Python脚本:linux上将筛选的文件夹复制到另一个目录,保存目录结构以及文件和文件夹操作方法

    import os,shutil def newDir(dir_path): if not os.path.exists(dir_path): os.makedirs(dir_path) def co ...

  9. Python学习(九)IO 编程 —— 文件夹及文件操作

    Python 文件夹及文件操作 我们经常会与文件和目录打交道,对于这些操作,python可以使用 os 及 shutill 模块,其中包含了很多操作文件和目录的函数. os 可以执行简单的文件夹及文件 ...

随机推荐

  1. ASP 基础三 SQL指令

    一 增删改查 <% set conn=server.CreateObject("adodb.connection") DSNtemp="DRIVER={SQL Se ...

  2. 【Codeforces 526D】Om Nom and Necklace

    Codeforces 526 D 题意:给一个字符串,求每个前缀是否能表示成\(A+B+A+B+\dots+A\)(\(k\)个\(A+B\))的形式. 思路1:求出所有前缀的哈希值,以便求每个子串的 ...

  3. 【Codeforces 499D】Name That Tune

    Codeforces 499 D 题意:给\(n\)个曲子,每个曲子每一秒有\(p_i\)的几率可以被猜出来,过了\(t_i\)秒肯定能被猜出来,猜完第\(i\)首歌立即播第\(i+1\)首,问\(T ...

  4. Android学习之基础知识四-Activity活动3讲(Intent的使用)

    主活动名称FirstActivity.java改为了MenuTest.java 一.什么是Intent: 1.Intent是Android程序中各组件之间进行交互的重要方式,不仅可以指明当前组件想要进 ...

  5. linux 修改内核参数 如何生效?

    Linux 操作系统修改内核参数有3种方式: 修改 /etc/sysctl.conf 文件,加入配置选项,格式为 key = value ,修改保存后调用 sysctl -p 加载新配置使用 sysc ...

  6. MongoDB的地理位置查询,以及和mysql的使用对比

    MongoDB的一个特色就是具有丰富的查询接口,比如地理位置查询. 在地理位置查询上,MongoDB有着比传统关系型数据库的优势,下面举个例子. 当前移动互联网应用,按用户离目标门店距离排序上的场景很 ...

  7. Bayesian Personalized Ranking 算法解析及Python实现

    1. Learning to Rank 1.1 什么是排序算法 为什么google搜索 ”idiot“ 后,会出现特朗普的照片? “我们已经爬取和存储了数十亿的网页拷贝在我们相应的索引位置.因此,你输 ...

  8. 【JVM.12】线程安全与锁优化

    一.概述 面向过程的编程思想极大地提升了现代软件开发的生产效率和软件可以达到的规模,但是现实世界与计算机世界之间不可避免地存在一些差异,本节就如何保证并发的正确性和如何实现线程安全讲起. 二.线程安全 ...

  9. IIS_部署出错

    在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Fil ...

  10. XenServer虚拟化环境安装记录

    Xenserver,思杰基于Xen的虚拟化服务器.Citrix XenServer是一种全面而易于管理的服务器虚拟化平台,基于强大的 Xen Hypervisor 程序之上.XenServer 是为了 ...