Есть ли способ Pythonic добавить строку в начало каждого файла в каталоге, созданном с именем файла без его расширения?

Я написал код для добавления строки, состоящей из имени файла, к файлу с этим именем файла, но он добавляет не только одну строку, но и имя всех файлов в этой папке, и строка добавляется после данные во всех файлах. Все, что я хочу, это добавить строку в начало файла.

С моим кодом я печатаю все три строки во всех файлах в конце каждого файла, т.е.

  previous data...
  parent a A B C D 
  parent b A B C D 
  parent c A B C D 

это мой код

 import os
 import glob
 os.chdir("C://Users//folder_naming_test_python//")
 files = os.listdir()
 #print("files=" )
 #print(files)
 d = []
 for k in os.listdir():
    d.append( k.split('.')[0])
    #print("names=")
    #print(d)
     prefix = 'parent '
     postfix = ' A B C D'
     Headers = list(map(lambda orig_string :prefix + orig_string + postfix, d))
    #print("Headers = ")
    #print(Headers)
 array_len = len(Headers)
 for file in files:
     for i in range(array_len):
        f = open(file, 'a+')
        a = f.read()
        f.seek(0)
        f.write(Headers[i]+'\n')
        f.close()
        f = open(file, 'r')
        print(f.read())

Мой пример входных данных сказал бы; 3 файла в папке с именами

   a.txt, b.txt, c.txt

то, что я ожидаю, не зависит от данных в файлах,

 either
 parent a A B C D or
 parent b A B C D or
 parent c A B C D 
 followed by the data in file.....

должны быть напечатаны в первой строке каждого файла соответственно (Примечание. строки a, b и c должны идти в отдельных файлах, а не все вместе во всех файлах)


person Nisharg    schedule 03.08.2019    source источник


Ответы (1)


Это можно сделать очень легко, используя fstrings.

import os
from pathlib import Path
for filename in os.listdir():
    with open(filename, "r+") as f:
       content = f.read()
       f.seek(0, 0)
       f.write(f"parent {Path(filename).stem} A B C D\n")
       f.write(content)
person Cider    schedule 03.08.2019
comment
Спасибо, cider, за помощь, но это также дает мне расширение файла в строке, есть ли что-то, что вы могли бы предложить мне снять .txt в конце имени файла? - person Nisharg; 03.08.2019
comment
О, не понял, что вы пытаетесь сделать. Отредактировал мой ответ. - person Cider; 03.08.2019