找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: longetree

[已回复] 多个csv文件合并成单个csv表格求助

0

主题

14

帖子

14

积分

贫民

积分
14
昨夜星辰 发表于 2017-3-2 16:48:18 | 显示全部楼层
longetree 发表于 2017-3-2 15:13
大兄弟,不知道怎么描述了,这样看下

处理前:(Label1--N)
  1. import os
  2. os.chdir('csv')
  3. data_list = []
  4. title_list = ['Threads', 'Sample', 'Average/ms', 'Median/ms', '90%Line/ms', 'Error%', 'Thougtput/sec', 'kb-sec']
  5. data_list.append(title_list)
  6. for fn in os.listdir('.'):
  7.     with open(fn) as f:
  8.         temp_list1 = []
  9.         temp_list1.append(f.readline().split(',')[0])
  10.         temp_list2 = f.readline().strip().split(',')
  11.         temp_list1.extend(temp_list2[1:5])
  12.         temp_list1.extend(temp_list2[9:11])
  13.         temp_list1.append(temp_list2[12])
  14.         data_list.append(temp_list1)
  15. with open('result.csv', 'w') as f:
  16.     f.writelines([','.join(item) + '\n' for item in zip(*data_list)])
复制代码

说明:我是把所有源文件放到一个名为csv的文件夹中,这个脚本应该和csv文件夹处于同级目录下。
回复 支持 反对

使用道具 举报

3

主题

10

帖子

10

积分

贫民

积分
10
longetree  楼主| 发表于 2017-3-2 17:12:47 | 显示全部楼层
昨夜星辰 发表于 2017-3-2 16:48
说明:我是把所有源文件放到一个名为csv的文件夹中,这个脚本应该和csv文件夹处于同级目录下。 ...

收到,没有问题,谢了大兄弟,我自己按需求把脚本在小改下;
我自己看下append和zip的示例吧
回复 支持 反对

使用道具 举报

0

主题

14

帖子

14

积分

贫民

积分
14
昨夜星辰 发表于 2017-3-2 17:20:48 | 显示全部楼层
longetree 发表于 2017-3-2 17:12
收到,没有问题,谢了大兄弟,我自己按需求把脚本在小改下;
我自己看下append和zip的示例吧 ...

嗯,你这个问题其实就是“转置矩阵”的问题~
回复 支持 反对

使用道具 举报

3

主题

10

帖子

10

积分

贫民

积分
10
longetree  楼主| 发表于 2017-3-2 18:49:15 | 显示全部楼层
本帖最后由 longetree 于 2017-3-2 18:51 编辑
longetree 发表于 2017-3-2 17:12
收到,没有问题,谢了大兄弟,我自己按需求把脚本在小改下;
我自己看下append和zip的示例吧 ...
  1. for parent,dirnames,filenames in os.walk('.'):
  2.     print('befor:%s'%filenames)
  3.     filenames.sort(key= lambda x:int(x[-9:-4]),reverse = True)
  4.     print('after:%s'%filenames)
  5.     for fn in filenames:
  6.         print('fn =[%s]'%fn)
  7.         with open(fn) as f:
  8.             temp_list1 = []
  9.             print('fn=%s'%fn[-9:-4])
  10.             #temp_list1.append(fn[-9:-4])
  11.             temp_list1.append(f.readline().split(',')[0])
  12.             print('test:%s'%f.readline().split(',')[0])
  13.             #print('temp+list1 = [%s]'%temp_list1)
  14.             temp_list2 = f.readline().strip().split(',')
  15.             print(f.readline().strip().split(','))
  16.             print(temp_list2)
  17.             temp_list1.extend(temp_list2[1:5])
  18.             #print(temp_list2[1:5])
  19.             temp_list1.extend(temp_list2[9:11])
  20.             #print(temp_list2[9:11])
  21.             temp_list1.append(temp_list2[12])
  22.             #print(temp_list2[12])
  23.             data_list.append(temp_list1)
复制代码


我想针对文件名固定后缀进行排序执行,将第一行内容添加成截取的“00010”,从结果看截取到填写OK了;
但后面temp_list2的值就没有赋值成功,虽然print(f.readline().strip().split(','))打印的是想要的值,但最终print(temp_list2)出来却始终是原始文件第一行内容;
百思不得其解,试过只要注释这行就OK,没想明白联系,求教


文件名“aggregate-00010.csv”,“aggregate-00110.csv”


回复 支持 反对

使用道具 举报

3

主题

10

帖子

10

积分

贫民

积分
10
longetree  楼主| 发表于 2017-3-2 19:24:18 | 显示全部楼层
longetree 发表于 2017-3-2 18:49
我想针对文件名固定后缀进行排序执行,将第一行内容添加成截取的“00010”,从结果看截取到填写OK了;
但 ...

好吧,坑在readline()上了,知道了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表