读取多个文件并与固定文件进行比较

时间:2017-09-14 01:00:22

标签: python python-2.7

我在目录中有50个文件,可以与一个文件进行比较,例如original.txt。我有以下代码。当我手动逐个给出文件名时,它运行良好。我想为此自动化它使用'glob.blog'

folder = "files/"
path = '*.rbd'

path = folder + path
files=sorted(glob.glob(path))

这里有完整的代码:

import glob
from itertools import islice
import linecache

num_lines_nonbram =  1891427

bits_perline = 32

total_bit_flips =  0

num_bit_diff_flip_zero = 0
num_bit_diff_flip_ones = 0
folder = "files/"

path = '*.rbd'

path = folder + path
files=sorted(glob.glob(path))

original=open('files/mull-original-readback.rbd','r')


#source1 = open(file1, "r")



for filename in files:


 del_lines = 101

 with open(filename,'r') as f:

  i=1
  while i <= del_lines:
   line1 = f.readline()

   lineoriginal=original.readline()

   i+=1

  i=0  


  num_bit_diff_flip_zero = 0
  num_bit_diff_flip_ones = 0
  num_lines_diff =0

  i=0
  j=0
  k=0
  a_write2 = ""
  while i < (num_lines_nonbram-del_lines):
        line1 = f.readline() 
        lineoriginal = original.readline() 



        while k < bits_perline:
                if ((lineoriginal[k] == line1[k])):
                     a_write2 += " "
                else:
                     if (lineoriginal[k]=="0"): 
                     #if ((line1[k]=="0" and line1[k]=="1")):

                      num_bit_diff_flip_zero += 1
                     if (lineoriginal[k]=="1"): 
                     #if ((line1[k]=="0" and line1[k]=="1")):

                      num_bit_diff_flip_ones += 1

                     #if ((line1[k]==1 and line1[k]==0)):
                      #a_write_file2 = str(i+1) + " " + str(31-k) + "\n" + a_write_file2
                      #a_write2 += "^"
                      #num_bit_diff_flip_one += 1



                   # else:
                    #    a_write2 += " " 

                k+=1


                total_bit_flips=num_bit_diff_flip_zero+num_bit_diff_flip_ones
        i+=1

        k=0
i = 0
print files
print "Number of bits flip zero= %d" %num_bit_diff_flip_zero +"\n" +"Number of bits flip one= %d" %num_bit_diff_flip_ones +"\n" "Total bit flips = %d " %total_bit_flips


f.close()
original.close()

我收到了错误:

Traceback (most recent call last):
  File "random-ones-zeros.py", line 65, in <module>
    if ((lineoriginal[k] == line1[k])):
IndexError: string index out of range

我想自动读取文件存在一些问题,而是手动输入名称。但是,无法找到解决方案。

1 个答案:

答案 0 :(得分:0)

为此,字符串索引超出范围,因为值k迭代次数超过预期,因此变量的值超出了程序的范围。应该可以通过将其替换为

来修复

if((lineoriginal [k-1] == line1 [k-1])):

希望这会有所帮助,但我现在无法访问Python,因此我无法对其进行测试: - )