| 查看: 1260 | 回复: 26 | |||
[求助]
望各路大神不吝赐教:不同文件夹下的文本内容的提取计算,文件较多 已有4人参与
|
|||
» 本主题相关价值贴推荐,对您同样有帮助:
请问VB如何实现顺序读取文本文件中的数据,并将读取到的数据保存在二维数组呢
已经有6人回复
如何将二进制文件内容转换成可阅读的文本文件
已经有4人回复
怎么替换一文本文件里面的内容?
已经有12人回复
delphi怎么读取多个文本文件
已经有4人回复
arcgis10中如何批量将ascii格式的文本文件转成raster?
已经有8人回复
本人有一二进制文件,希望找一程序打开,变为文本文件
已经有10人回复
如何将文本文档转换成*dat格式的文件
已经有7人回复
【求助】FORTRAN读取文本文件
已经有9人回复
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★
qingkonggzc: 金币+10, ★★★很有帮助 2015-05-28 10:19:31
qingkonggzc: 金币+10, ★★★很有帮助 2015-05-28 10:19:31
|
你说之前用过Matlab 那太好了 再学Python就会很简单的 这两个语法还是挺像的。 我没有太多时间写这个程序,我的大致思路是: 1、利用Python的listdir(路径名)函数,可实现获取参数所指的路径名下的所有文件。该函数的结果是把获取到的所有文件名放在一个列表中,然后就你可以遍历这个列表 逐一地利用open()函数去读文件的内容,当然根据你文件的结构,我觉得肯定是要逐行去读的 2、读到一行的数据后,可以利用正则表达式的方式从中提取出你需要的数据,然后进行累加。 3、当某一天的所有文件都处理完了,把累加器变量中的值拿出来进行你说的除法运算,那么当天的结果就出来了。 |
7楼2015-05-26 21:02:28
9楼2015-06-02 14:18:49
jiangxingge
金虫 (正式写手)
- 应助: 15 (小学生)
- 金币: 2498.6
- 红花: 5
- 帖子: 322
- 在线: 55.4小时
- 虫号: 3205681
- 注册: 2014-05-14
- 性别: GG
- 专业: 石油、天然气地质学
【答案】应助回帖
|
我觉得你的技术思路是可行的。 1,遍历所有文件的 问题。为了在FORTRAN中遍历,可以利用 SYSTEM 子程序 (可查看CVF帮助) 由于你已知 236-242的文件夹名字,所以,可以建立一个数组,并把这些名字预先赋值(或者写在一个文本中再读取) character*200 pathname(7) data pathname/'d:\DATA_HAV\236\','d:\DATA_HAV\237\',。。。。'd:\DATA_HAV\242\' 对 7天进行循环 循环中 ,首先提取这一天的 文件列表 call sysytem(' DIR '//pathname(i)(1:16)//'*.hav > a.txt') ! 16 是pathname中字符的长度 注意 :这句话 产生了 一个 a.txt 的文件 ,文件的 内容 像下面的样子 驱动器 D 中的卷没有标签。 卷的序列号是 0004-5856 d:\data_hav\242 的目录 2015/01/29 09:41 4,316 chdu2370.hav 2015/01/29 09:41 4,316 gua12370.hav 2 个文件 8,632 字节 0 个目录 85,285,617,664 可用字节 然后 你读取 这个文件,就可以 得知 这一天的 所有文件名,当然也知道 这一天 有几个文件。于是 就可以对每一个 文件进行操作。 |
11楼2015-06-05 15:36:55
jiangxingge
金虫 (正式写手)
- 应助: 15 (小学生)
- 金币: 2498.6
- 红花: 5
- 帖子: 322
- 在线: 55.4小时
- 虫号: 3205681
- 注册: 2014-05-14
- 性别: GG
- 专业: 石油、天然气地质学
【答案】应助回帖
|
2,关于内部数组的 问题。根据你提供的数据,实际上 有几天,每天有几个文件,对于数组是 没有影响的 ,因为 你只是求平均而已,不管几个文件,平均结果 是一个。数组跟每一个文件中的 内容有关,比如 G01-G32,还有 C01-C32,要对每一个需要计算的 准备数组。 建议 建立二位数组,一个维度就是 32,一个就是 针对 GCRE 4个,由于计算平均值,所以需要 一个数加总和,一个数记个数 dimension SV(32,4),NV(32,4) 然后读取每一个文件,每次剔除不需要(无法)计算的,把需要计算的 加起来,个数也记住。到全部结束,除一下得到平均值。 如果需要其他计算,也是 类似的思路,只不过多开几个数组而已。 |
12楼2015-06-05 15:45:38
jiangxingge
金虫 (正式写手)
- 应助: 15 (小学生)
- 金币: 2498.6
- 红花: 5
- 帖子: 322
- 在线: 55.4小时
- 虫号: 3205681
- 注册: 2014-05-14
- 性别: GG
- 专业: 石油、天然气地质学
【答案】应助回帖
|
这个思路是可以做到的。但是程序有点繁。 但是由于你说“这是一个大循环里面的一部分,是在Fortran下面编的,” 所以 只好这样做。 |
» 本帖已获得的红花(最新10朵)
13楼2015-06-05 15:51:00
me_yu
木虫 (正式写手)
- 应助: 26 (小学生)
- 金币: 3369.5
- 散金: 350
- 红花: 7
- 沙发: 1
- 帖子: 895
- 在线: 468.1小时
- 虫号: 2533501
- 注册: 2013-07-05
- 专业: 计算机软件
【答案】应助回帖
|
python2.7.6 脚本实现,看下是否符合你的需求,百度盘连接如下: 链接: http://pan.baidu.com/s/1jGH1KiE 密码: q3c9 |
» 本帖已获得的红花(最新10朵)

14楼2015-06-05 20:32:59
me_yu
木虫 (正式写手)
- 应助: 26 (小学生)
- 金币: 3369.5
- 散金: 350
- 红花: 7
- 沙发: 1
- 帖子: 895
- 在线: 468.1小时
- 虫号: 2533501
- 注册: 2013-07-05
- 专业: 计算机软件
【答案】应助回帖
|
嗯,win7 下 python 2.7.6 写的脚本 Linux 下应该也能运行的,python 跨平台的 |
» 本帖已获得的红花(最新10朵)

20楼2015-06-06 11:50:08
me_yu
木虫 (正式写手)
- 应助: 26 (小学生)
- 金币: 3369.5
- 散金: 350
- 红花: 7
- 沙发: 1
- 帖子: 895
- 在线: 468.1小时
- 虫号: 2533501
- 注册: 2013-07-05
- 专业: 计算机软件
【答案】应助回帖
之前的两个(havesum,reprtsum)加和放到循环外了 ![]() 这个脚本没什么可以注释的,就是文件的读取拆分字符串的拼接以及数据转换而已,下面链接是我修改过的脚本。比较难理解的我觉得应该是在数据存储上面,我这里用字典是这样实现的,即:key:[have+','+reprt+','],比如 G24:'162,188,162,188,162,188,162,188,162,188,' 这条数据就包括了所有文件的 G24 行的have和reprt数据(字典中的值已逗号为分隔符,单数列下标存放have数据,双数列存放reprt数据),之后就是汇总及求比例了。脚本中你可以逐个释放print前的注释,调试看下数据的变化的。 链接: http://pan.baidu.com/s/1yfyWI 密码: 1mkc |
» 本帖已获得的红花(最新10朵)

23楼2015-06-08 12:52:42
2楼2015-05-25 10:23:48
jerkwin
专家顾问 (正式写手)
-

专家经验: +14 - 应助: 454 (硕士)
- 金币: 20699.1
- 散金: 148
- 红花: 81
- 帖子: 813
- 在线: 2648.3小时
- 虫号: 1023452
- 注册: 2010-05-19
- 专业: 理论和计算化学
- 管辖: 分子模拟
3楼2015-05-26 01:10:03
4楼2015-05-26 09:51:54
5楼2015-05-26 10:23:46
6楼2015-05-26 10:25:16
8楼2015-05-27 20:39:36
10楼2015-06-04 21:16:26













回复此楼
qingkonggzc