# 通过对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. Qt发起Http/Https请求

    1. BurpSuite抓包 1.1 设置代理 burpsuite代理设置 浏览器代理设置(chrome),其他浏览器同理. 地址栏输入 chrome://settings/, 打开代理设置 设置代理 ...

  2. java 面向对象String类

    1.String类:String 是不可变字符序列 1) char charAt(int index)返回字符串中第 index 个字符. 2) boolean equalsIgnoreCase(St ...

  3. java 入门常识

    1.java应用程序的运行机制 Java首先利用文本编辑器编写 Java源程序,源文件的后缀名为.java:再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class: 最后 ...

  4. android java.lang.NoClassDefFoundError: cn.yw.lib.viewpagerfragment.ViewPagerFragmentActivity

    假如你判断你的项目没有异常,并且该注册的Activity也注册了.那么解决这个问题的方法就是:右击项目->properties->Java Build Path->Order and ...

  5. 以英雄联盟的方式建模,谈对依赖注入(DI)的理解以及Autofac的用法(一)

    一.前言 近期在探索分层架构和架构设计,选择了领域驱动作为5年.Net开发后的新的方向,不可避免的接触了IoC/DI方面的技术.目前通过反射或其他方法都已实现,但只知其一,并没有考虑为什么要这么做,同 ...

  6. Qt5.9使用QWebEngineView加载网页速度非常慢,问题解决

    折腾了大半天终于解决了 原帖地址:https://bugreports.qt.io/browse/QTBUG-44763 BUG单下的留言讲明了问题发生的原因,那就是系统默认设置为自动寻找代理,而使用 ...

  7. WEB 小案例 -- 网上书城(四)

    针对于这个小案例我们今天讲解结账操作,也是有关这个案例的最后一次博文,说实话这个案例的博文写的很糟糕,不知道该如何去表述自己的思路,所以内容有点水,其实说到底还是功力不够. 处理思路 点击结账,发送结 ...

  8. Linux下部署SSH登录时的二次身份验证环境记录(利用Google Authenticator)

    一般来说,使用ssh远程登录服务器,只需要输入账号和密码,显然这种方式不是很安全.为了安全着想,可以使用GoogleAuthenticator(谷歌身份验证器),以便在账号和密码之间再增加一个验证码, ...

  9. Shell学习笔记二

    一.调试脚本 调试功能是每一种编程语言都应该实现的重要特性之一,当出现一些始料未及的情况时,用它来生成脚本运行信息.调试信息可以帮你弄清楚是什么原因使得程序发生崩溃或行为异常.每位系统程序员都应该了解 ...

  10. python-深浅copy-18

    # 赋值运算l1 = [1,2,3]l2 = l1l1.append('a')print(l1,l2) # [1, 2, 3, 'a'] [1, 2, 3, 'a'] #copyl1 = [1,2,3 ...