как добавить два файла в один и тот же сценарий после операторов if l oop ИЛИ как добавить прямо в текстовый файл. Python - PullRequest
1 голос
/ 17 июня 2020

У меня есть сценарий, над которым я работаю, превращая четыре отдельных шага (сценария) в 1. Я подошел к своей последней проблеме и знаю, что над этим не задумываюсь, но мне нужна небольшая помощь, чтобы решить эту проблему. угол.

Мне нужно либо выяснить, как объединить два файла после последнего оператора IF-L OOP, либо найти способ записать непосредственно в один текстовый файл из сценария в необходимом порядке (см. ниже как окончательный).

В настоящее время сценарий показывает, что я пытаюсь объединить (добавить) внизу после операторов IF-L OOP. Если более эффективный способ будет лучше, пожалуйста, пролей на меня немного света. Чтобы быть более ясным, надеюсь, я попытался записать непосредственно в один файл, и оба совпадения if-Statement отображаются, но мой второй заголовок da_list повторяется, потому что он находится внутри l oop или вообще не отображается, если у меня есть текст Заголовок за пределами l oop. Вот почему вы видите заголовки перед операторами 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. Заголовок F_list со случайными словами mixchar соответствует из строки (cf.txt) и f_list. И то же самое для da_list, напечатанного (добавленного) ниже.

             F_List

2TEHUO

5JESYM

BFHYSJ

SYHNRW

TWSIHN

             Da_List

HKHDU7

DJSKUO

DJDH8

KSIE3

SWSYR

1 Ответ

0 голосов
/ 17 июня 2020

Одним из решений может быть просто добавить файл во второй файл. Вам следует подумать об использовании переменных для путей к файлам вместо копирования и вставки. Кроме того, название файлов немного сбивает с толку.

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

Соответствующий вопрос о добавлении файлов

Вот объяснение того, как вы можете использовать с оператором

Кроме того, вместо записи содержимого непосредственно в файлы в операторе if, почему бы просто не сохранить его в виде строк? Затем, в конце концов, вы можете записать его в файл.

Если вы попытаетесь прочитать из файла, прежде чем закрыть его, текст не появится. Вы можете попробовать приведенный ниже фрагмент.

output5 = open(r"Test", "w")
output5.write("Foo")
output6 = open(r"Test", "r")
print(output6.read())
...