1

我有一个脚本,我一直在努力将四个单独的步骤(脚本)变成 1。我解决了我的最后一个问题,我知道我想多了,但需要一些帮助来扭转局面。

我要么需要弄清楚如何在最后一个 IF-LOOP 语句之后合并两个文件,要么找到某种方法按照所需的顺序从脚本中直接写入一个文本文件(下面列出为最终文件)。

目前,该脚本显示我正在尝试在 IF-LOOP 语句之后的底部合并(附加)。如果更有效的方法更好,请为我发光。希望更清楚一点,我试图直接写入一个文件,并且两个 if-Statement 匹配项都显示了,但是我的第二个 da_list 标头重复,因为它在循环内,或者如果我有文本标头之外根本不显示环形。这就是为什么您会在 if 语句之前看到标题。此外,只是为了让您知道 cf.txt 文件的样子。

cf.txt 示例片段。点(句点)是每列一个(AD)。Mixchar 单词从 E 列开始

ABCDE

标题行

. . . . 5J1SYMC2

. . . . 2TEHUOB1

. . . . TWSIHNB2

. . . . SYHNRWE2

. . . . BFHYSJF1

cf = open(r"E:\test2\cf.txt", "r")
f = open(r"E:\test2\F.txt", "r")
da = open(r"E:\test2\DA.txt","r")
output5 = open(r"E:\test2\output5.txt", "a")
output6 = open(r"E:\test2\output6.txt", "a")

list2 = f.read().split()
list3 = da.read().split()

next(cf)
newlist = []
f_list = []
da_list = []

output5.write("                                  F_List \n")  #text header for output5
output5.write("\n")

output6.write("                                  Da_List \n") #text header for output6
output6.write("\n")

for line in cf:                     #cycles thru cf.txt column 5 removes last 2 chars_
rc = (line.split()[4][:-2])         #and append string(rc) in (newlist).
    if rc not in newlist:
    newlist = []
    newlist.append(rc)

    check = any(item in newlist for item in list2)  #check string(rc) if exist in f_list_
    if check is True:                               #clears previous f_list line and appends new.
        if rc not in f_list:
            f_list = []
            f_list.append(f'{rc}', ),
            output5.write(f'{f_list}'[2:-2]),       #writes (rc) strings that exist in f_list to 
            output5.write('\n')                     #output5.txt


    check = any(item in newlist for item in list3)  #check string(rc) if exist in da_list_
    if check is True:                               #clears previous da_list line and appends new.
        if rc not in da_list:
            da_list = []
            da_list.append(f'{rc}', ),
            output6.write(f'{da_list}'[2:-2]),      #writes (rc) strings that exist in f_list to 
            output6.write('\n')                     #output6.txt


fin = open(r"E:\test2\output6.txt", "r")    #trying to append output6.txt to output5.txt
data2 = fin.read()
fin.close()
fout = open(r"E:\test2\output5.txt", "a")
fout.write(data2)
fout.close()

在此处输入代码

output5.txt 文件中需要的最终结果。带有随机 mixchar 词的 F_list 标头与 (cf.txt) 字符串和 f_list 匹配。下面打印(附加)的 da_list 也是如此。

             F_List

2特火

5杰西姆

BFHYSJ

SYHNRW

台湾

             Da_List

HKHDU7

DJKUO

DJDH8

KSIE3

SWSYR

4

1 回答 1

0

一种解决方案可能是将文件附加到第二个文件。您应该考虑对文件路径使用变量而不是复制粘贴。此外,文件的名称有点混乱。

output5.close()
output6.close()
with open(r"E:\test2\output5.txt", 'a') as output5:
   with open(r"E:\test2\output6.txt", "r") as output6:
      output5.write(output6.read())

关于附加文件的相关问题

以下是如何使用with语句的说明

此外,与其将内容直接写入 if 语句中的文件,为什么不直接将其存储到字符串中呢?然后最后你可以将它写入文件。

如果您尝试从文件中读取,在关闭它之前,文本将不会显示。你可以试试下面的片段。

output5 = open(r"Test", "w")
output5.write("Foo")
output6 = open(r"Test", "r")
print(output6.read())
于 2020-06-17T19:44:46.877 回答