zoukankan      html  css  js  c++  java
  • python 处理文件

    好久没写过python了天 一点点查的

    import os
    import re
    from decimal import *
    import math
    '''
    def getfiles():
        filenames=os.listdir(r'F:filePythonvolume')
        print(len(filenames))
    getfiles()
    '''
    name = "F:\filePython\volume" #!!\
    packagenames = os.listdir(r'F:filePythonvolume') #返回值是list类型
    print(len(packagenames)) #得到六个子文件夹
    for package in packagenames:
        #print(package)
        file2_path = package + ".txt"
        f2 = open(file2_path,"w") #文件创建在了本目录下
        filenames = os.path.join(name,package)
        #print(filenames) #得到各个文件夹的绝对路径值
        
        for filename in os.listdir(filenames):
            print(filename) #得到单个文件 只是文件名 开始处理单个文件
            signalname = filename
            filename = os.path.join(filenames,filename)
            f = open(filename,"r",encoding = "utf-8")
            countz = 0
            counts = 0
            numberlist = []
            for line in f:
                #print("line: "+line)
                if line.startswith('#') | line.startswith('@'):
                   countz += 1
                else :
                    counts += 1
                    numberlist.append(line)
                    #print("line: "+line)
                    #print(type(line)) #str
            #print(countz) #第25行开始数字
            #print(counts) #共497
            #print(len(numberlist))
            usenumberlist = []
            for row in numberlist:
                #对每一行进行处理 得到中间的那个数 再存储 判断类型别待会转不成
                usenumber = re.split(r"[ ]+", row)[2] #正则
                #print(usenumber) #str
                #print(type(usenumber))
                usenumberlist.append(usenumber)
            # 得到第二列的数值 存储在list数组
            #开始类型转换 进行精确计算decimal 
            sum = Decimal('0.0')
            for usen in usenumberlist:
                #print("usen: "+usen)
                sum += Decimal(usen)
            #print(sum)
            #计算均值
            average = Decimal('0.0')
            average = sum / Decimal(counts) #接受直接拿整型做参数
            print(average)
            straverage = str(Decimal(average))
            #print(straverage)
            #计算均方差
            sumvariance = Decimal('0.0')
            for usen in usenumberlist:
                #print("usen: "+usen)
                fac1 = Decimal(usen)
                sumvariance += (fac1 - average)*(fac1 - average)
            #print(sumvariance) #未开方前的分母
            fz = sumvariance / Decimal(counts-1) #未开方前的分子
            #计算标准差
            #print(fz.sqrt()) 
            StandardDeviation = fz.sqrt()
            #print(type(StandardDeviation)) #<class 'decimal.Decimal'>
    
            
            #本文件的内容:要写入三个part filename straverage StandardDeviation
            #print(signalname)
            f2.write("%-25s	 %35s	 %30s
    "%(signalname, straverage, str(Decimal(StandardDeviation)))) #左靠齐输出
            
            #f2.write("11")
        
    
        '''
        #都弄好了之后
        #print(package)
        file2_path = package + ".txt"
        f2 = open(file2_path,"w") #文件创建在了本目录下
        f2.write("11")
        '''
        f2.close()
    

    我再说一次我不喜欢现在的代码形式

  • 相关阅读:
    uoj311 【UNR #2】积劳成疾
    SQL中MAX()和MIN()函数的使用(比较字符串的大小)
    SQL Server 怎样生成序列号(虚拟数字辅助表)
    如何使用引用类型来改变变量的值
    C#获取当前主机硬件信息
    JS扫雷原理性代码
    Struts2文件的上传和下载实现
    Struts2拦截器详解
    Struts2拦截器配置和使用
    Struts2转换器配置和用法
  • 原文地址:https://www.cnblogs.com/yundong333/p/13961010.html
Copyright © 2011-2022 走看看