Jackyu的博客

闲来无事,实用编程

Python编程之获取多文件csv数据

该程序主要是获取csv文件中的DataValue的数据。它可以获取一个目录下所有的csv文件中的数据。但是该程序在获取数据时,需要哦用户提供csv文件所在的目录,以及所有csv文件的名称的链表文件(listfile.txt),程序中链表文件默认在桌面上的.../CSV/NewData目录下。使用该程序请参照博客(Python编程之获取目录下csv文件名 )中的代码去使用。

# -*- coding: utf-8 -*-
#!usr\bin\python

import os
import csv
import winreg
import time
import shutil#可以直接删除非空文件夹模块shutil.rmtree(mkpath)  # 可以直接删除非空文件夹

def get_desktop():
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')#利用系统的链表
    return winreg.QueryValueEx(key, "Desktop")[0] #返回的是Unicode类型数据

def mkdir(root):#创建CSV文件夹
    Desktop_path = str(root)
    mkpath = Desktop_path + '\CSV\NewData\DataValue'
    if os.path.exists(mkpath) is False:  # 判断一个目录是否存在
        os.mkdir(mkpath + '\\')  # 创建目录,用于存放处理后的数据
    else:
        shutil.rmtree(mkpath)  # 可以直接删除非空文件夹
        os.mkdir(mkpath + '\\')  # 创建目录,用于存放处理后的数据
    return mkpath

def listfilehandle(listfile):
    Rowdata = []
    rfile = open(listfile, 'r')
    rfilelist = rfile.readlines()#直接读取文件中每一行数据转换成List类型
    ListFileLen = len(rfilelist)  # 链表文件中文件名的个数
    print ListFileLen
    for filename in rfilelist:
        Rowdata.append(filename.strip('\n'))
    return Rowdata

'''******************CSV文件名打开路径列表*****************'''
def fnlistpath(filename,root):
    fileopenpath = root + '\\' + filename
    return fileopenpath


if __name__=='__main__':
    fileroot = raw_input("FileRoot:")
    if fileroot is '':
        fileroot = 'C:\Desktop\CSV\originalCSVfile'

    FilePathList = []
    listfile = []
    data1 = []
    #批量文件
    listfilesroot = 'C:\Desktop\CSV\NewData\listfile.txt'
    Rowdata = listfilehandle(listfilesroot)
    print Rowdata
    for index in Rowdata:
        filepath = fnlistpath(index,fileroot)
        FilePathList.append(filepath)
    print FilePathList

    newdir = mkdir(get_desktop())
    print newdir

    for item in range(len(Rowdata)):
        reader = csv.reader(file(FilePathList[item]))
        # 打开文件,追加a
        outfile = open(newdir+'\\'+Rowdata[item], 'wb')
        # 设定写入模式
        csv_write = csv.writer(outfile, dialect='excel')
        '''------------------提取csv文件中的某列数据-----------------------'''
        #将CSV文件中数据全部存放到listfile列表中去
        for rows in reader:
            listfile.append(rows)

        for i in range(len(listfile)):
            strbuff = (listfile[i])[0]
            if strbuff == 'DataValue':
                data1.append(listfile[i])
        del listfile[:]
        #print data1
        for i in range(len(data1)):
            csv_write.writerow(data1[i])
        del data1[:]
        outfile.close()


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010896233/article/details/79979669
个人分类: Python
上一篇Python编程之获取目录下csv文件名
下一篇Python编程之提取满足某条件的另一列中的数据(可多文件操作)
想对作者说点什么? 我来说一句

python程之PyS60编程课程

2010年02月24日 1023KB 下载

程之禅(程序员的哲学 )

2011年07月18日 349KB 下载

没有更多推荐了,返回首页

关闭
关闭