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()
    

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

  • 相关阅读:
    231. Power of Two
    204. Count Primes
    205. Isomorphic Strings
    203. Remove Linked List Elements
    179. Largest Number
    922. Sort Array By Parity II
    350. Intersection of Two Arrays II
    242. Valid Anagram
    164. Maximum Gap
    147. Insertion Sort List
  • 原文地址:https://www.cnblogs.com/yundong333/p/13961010.html
Copyright © 2011-2022 走看看