24小时热门版块排行榜    

查看: 1346  |  回复: 4

cxycxu

新虫 (初入文坛)

[求助] Perl转换python,读取文件以及定义函数, 已有1人参与

师傅给了一个perl文件处理res文件,让我转换成python文件处理,对于res文件,我不知道怎么用python读取,想要实现每一组数对应一个波形,对有大于0.5的大于6个点大于1的有3个点的波形并且波形后有bath路径的记一个,最后记总数,,#!/usr/bin/python
#_*_coding:UTF-8_*_
#if argv != 5 :
#return
#($INPUT,$THRES_PEAK,$SMOOTH_WIN,$peak) = @ARGV;
def argv(self):
   (INPUT,THRES_PEAK,peak,THRES,SMOOTH_WIN)= argv
   file_object = open('US_HI_BIX_PC_TC_CarDowntown_5dB.res',r)  
try :  
  f = file_object.read( )  
  THRES = 4.5
  total = 0
  recall = 0
  work = 0
  on_off = 0
  count_down=0
  count_down_path=0
  line= file_object.readline()
  line=line.strip('\n')
  while line :
          total+=1  
          #print "$content\n";
          if count_down > 0 :
           count_down+=1
          if count_down_path > 0 :
           count_down_path-=1
           as="bt_"
           if as in line :  
                    if count_down > 0 :
                          recall+=1
                          count_down=0
                          #print "=================================$total\n";
                          count_down_path = 15
           else :
                    val = line.split()
                    inv_score = val[0]
                    def inv_score
                    in_score = inv_score
                    if in_score >= THRES & on_off == 0 :
                          work = 1
                          if in_score >= THRES_PEAK :
                            pcount = 1
                          else :
                            pcount = 0
                            st = st_time
                            on_off = 1
                    elif in_score >= THRES && on_off == 1 :
                          work+=1
                          if in_score >= THRES_PEAK :
                            pcount+=1
                    elif in_score < THRES && on_off == 1 :
                          ed = last_ed
                          if work >= SMOOTH_WIN && pcount >= peak && count_down_path > 0 :
                            recall+=1
                            # print "===============================$total\n";
                            count_down_path = 0
                          elif work >= SMOOTH_WIN & pcount >= peak :
                            #$recall+=1
                            count_down=7
                            print OUT "$total\t"
                            print OUT "$pcount\n"
                          work = 0
                          on_off = 0
                    last_st = st_time
                    last_ed = ed_time
  if work >= SMOOTH_WIN & pcount >= peak :
          recall+=1
          print "recall\n"
finally:
  if f:
    f.close()
我根据他的改的,但是感觉好像哪里都不对,,作为新手小白,知道很令人无语,所以求大神们帮帮忙。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

somomo91

专家顾问 (职业作家)


jjdg: 金币+1, 感谢参与 2017-06-28 21:29:14
最好能够提供一个简单的 res 文件,要不然 res 格式有太多种了,不知道你说的是哪种,也就没法看是否能帮上忙
2楼2017-06-28 05:40:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cxycxu

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by somomo91 at 2017-06-28 05:40:32
最好能够提供一个简单的 res 文件,要不然 res 格式有太多种了,不知道你说的是哪种,也就没法看是否能帮上忙

作为一个新手,,我从最简单的开始学起了,现在出现个问题 ,我按照python核心编程书上的代码在python2.7输入代码:
class FooClass(object):
    version=0.1
    def _init_(self,nm='John Doe'):
        self.name=nm
        print ('created a class instance for ',nm)
    def showname(self):
        print ('your name is ',self.name)
        print ('my name is',self._class_._name_)
    def showver(self):
        print(self.version)
    def addMe2Me(self,x):
        return x+x
然后按照书上调用函数,fool =FooClass();fool.showname()会报错:AttributeError: 'FooClass' object has no attribute 'name',这是为什么啊
3楼2017-06-30 17:14:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjdg

版主 (知名作家)

优秀版主

python2.x与3.x的版本有差异,代码不一定通用
努力学习!以正当途径!获得需要的知识!
4楼2017-06-30 21:58:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

somomo91

专家顾问 (职业作家)

【答案】应助回帖

★ ★
jjdg: 金币+2, 感谢说明 2017-07-01 10:20:51
引用回帖:
3楼: Originally posted by cxycxu at 2017-06-30 17:14:51
作为一个新手,,我从最简单的开始学起了,现在出现个问题 ,我按照python核心编程书上的代码在python2.7输入代码:
class FooClass(object):
    version=0.1
    def _init_(self,nm='John Doe'):
        s ...

这个不是Python 版本的问题,而是。。。
关键是你少打了几个下划线
CODE:
class FooClass(object):
    version=0.1
    def __init__(self,nm='John Doe'):
        self.name=nm
        print ('created a class instance for ',nm)
    def showname(self):
        print ('your name is ',self.name)
        print ('my name is',self.__class__.__name__)
    def showver(self):
        print(self.version)
    def addMe2Me(self,x):
        return x+x

5楼2017-07-01 01:34:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cxycxu 的主题更新
信息提示
请填处理意见