-1

これが私の現在のコードです。ファイル内の一致を確認するために、2 つの値 (行) を確認したいと考えています。

def checkOS():
    fid1 = open("C:/Python/NSRLOS.txt", 'r')
    fid2 = open("C:/Python/sha_sub_hashes.out", 'r')
    outdata = open("osMatches.txt", 'w')
    line1 = fid1.readline()
    line2 = fid2.readline()
    while(line1 and line2):
        xline= line1.split(',')[1]
        yline = line2.split("|")[3]
        zline = xline.replace('"','')
        if (yline == zline):
            outdata.append([yline , zline])
            print xline, zline

if __name__=="__main__":
    checkOS()

唯一の問題は、私が書いたことがよくわからないことです。if ステートメントの前のすべてのコードは、行のインデックスからプルできるように再フォーマットされているだけです。私が知りたいのは、私が使用したステートメントがその意味で機能し、効率的かどうかです。次に、等しい値を出力したいと思います。ファイル内のいくつかの行は次のとおりです。

file2:
"10","Amstrad 6128","Unknown","1006"
"100","Macintosh 9.0","8.5.1","67"
"101","Macintosh 9.0.4","na","67"
"102","Macintosh 9.1","9.1","67"
"103","Macintosh 9.2","9.2","67"
"104","Macintosh 9.2.2","9.2.2","67"
"105","Macintosh 9.x","9.X","67"
"106","Macintosh X","10","67"
"107","Macintosh7.5.3","7.5.3","67"
"108","NetWare","n/a","674"
"109","Novel Dos 7.0","7","609"
"11","Apple II+","Unknown","67"
"110","OS/2","Unknown","427"



file2:

    DD84270022E57F1850C8454FA432ADFF99588157B|index.docbook|2225|Redhat 7.3 (32bit)|Linux

D84270022E57F1850C8464F5432ADFF99588157B|index.docbook|2225|Redhat 8.0 (32bit)|Linux

26EEEB25D7005F9FF9EE05A8084C77242702FBAD|Localizable.strings|2142|Mac OS X 10.4|OSX

34DC3D728C34E32F090307F575254D57E53C53FF|SYSTEM|10747904|Windows 7 Home Premium (32bit)|Windows

279E5A766C88EEA5AB946A0AF8D0C4FC366B2AF9|totem.devhelp|21324|Linux Ubuntu Desktop 9.10 (32bit)|Linux

279E5A766C88EEA5AB964A0AF8D0C4FC366B2AF9|totem.devhelp|21324|Linux Ubuntu Desktop 9.10 (64bit)|Linux

B3D11390AB8683BBE443A415EDD91BFDFD482134|dslconfig.pyc|6246|Redhat 9.0 (32bit)|Linux

おそらく、これらの数行ですぐに一致するものは見つかりませんが、ファイルをざっと調べたときに一致するものを見つけたので、少なくとも 1 つの一致があることはわかっています。

4

1 に答える 1

1

あなたはおそらく次のようなものを探しています:

これを使用するwith()と、ファイルが自動的に閉じられます。

def checkOS():
    with open("C:/Python/NSRLOS.txt") as fid1,open("C:/Python/sha_sub_hashes.out") as fid2,open("osMatches.txt", 'w') as outdata:
        for xline,yline in zip(fid1,fid2):  #zip fetches lines from both files one by one                                           
            xline= xline.split(',')[1]      #use itertools.izip instead of zip if you're on python 2.x
            yline = yline.split("|")[3]
            zline = xline.replace('"','')
            if yline == zline:                
                outdata.write("{0}{1}\n".format(yline , zline)) #use write to write the data back

if __name__=="__main__":
checkOS()
于 2012-07-09T17:20:07.710 に答える