Leute,Dateien manipulieren Python 2.7
Ich habe hier eine Schwierigkeit, Dateien zu manipulieren.
Ziel: Ich entwickle ein Skript, das Ordner erstellen und Dateien von einer Quelle kopieren muss, liest das Skript den Benutzer die Anzahl der Monate zu erstellen. Das Skript repliziert die Dateien entsprechend der Anzahl der zu erstellenden Monate, wenn im Jahr 2017 eine Zeichenfolge in eine TXT-Datei in das Verzeichnis geändert werden muss.
Original-String in der Datei: ANO INICIO DO ESTUDO 2016 String geändert werden soll: ANO INICIO DO ESTUDO 2017
PS: Die Datei geändert werden soll, nicht das Original, sondern eine Kopie
Es ist möglich, eine Zeile aus einer TXT-Datei zu ändern?
Was ich brauche:
lesen Programm Quelldatei und spielen auf ein Array einen Teil einer Zeichenfolge innerhalb des Arrays identifiziert die Zeichenfolge ändern, wenn es gefunden wird, Teil der Zeichenfolge löschen, die Quelle zu sein file und schreibe einen anderen mit dem gleichen Namen oder ändere einfach einen String (ein Wort in einer Zeile) innerhalb der Quelldatei.
FILENAME_NEWAVE = Path of the source file
STRING_DGER = String to be searched
FILE_DATE = Year
Diese nicht funktioniert, schreiben Sie in der Quelldatei
def find_word_in_file_dger(FILENAME_NEWAVE, STRING_DGER, FILE_DATE):
f = open(FILENAME_NEWAVE, "r+")
file_array = f.readlines()
for i in file_array:
if i.find(STRING_DGER.encode('utf-8')):
f.write(i)
else:
print ("TO LENDO O ARRAY")
if FILE_DATE == "2016":
continue
else:
i.replace(STRING_DGER, "ANO INICIO DO ESTUDO " + FILE_DATE)
f.write(i)
print("TO ESCREVENDO A LINHA CORRETAMENTE MLK!! ")
return i
f.close()
return False
Sie können versuchen, mit somenthig wie folgt geben: 'Import re' ' cache = None' 'mit open ("file.txt"," r ") als f:' ' \t cache = f.read()' ' new_file = re.sub (STRING_DGER "ANO INICIO DO ESTUDO {}" -Format (file_date.), cache)' 'wenn new_file: ' \t' mit open ("newfile.txt", "w") als f: ' \t \t 'f.write (new_file)' – Rollback
Funktioniert! Aber die Zeichenfolge, die in der Datei existierte, war immer noch da, ich muss die Zeichenfolge "2016" löschen, die sich in der Datei befindet, und "2017" einfügen. Wenn 2017 setzen 2018 ... –
hat der Akzent auf die Datei erscheint diese Fehlermeldung, "UnicodeDecodeError: 'Ascii' Codec kann Byte 0xba in Position 1355 nicht dekodieren: Ordnungszahl nicht im Bereich (128)" –