Funktion med felhantering
Hej. Dags att premiärinviga pythondelen på nya pluggakuten!
Jag har problem hur man ska hantera funktioner som innehåller felhantering. tex detta:
Uppgiften är följande: Skapa en funktion user_dialogue() som ber om namn på två filer, och kör er egen funktion encrypt_file (från Uppgift 2) på dessa två filer. Er nya funktion (user_dialogue) skall ha felhantering, och fånga upp om in_file inte existerar, och i sådana fall fråga efter ett nytt filnamn. Se följande exempel:
Name of new encrypted file:out_file.txt
Name of file to be encrypted:blaha.txt
That resulted in an input/output error, please try again! Details:FileNotFoundError(2, 'No such file or directory')
Name of file to be encrypted:namn.csv
Encryption completed!
Notera att felhanteringen skall ske i user_dialogue, trots att själva felet (om filen inte existerar) uppkommer i encrypt_file. Ni skall inte ändra i encrypt_file.
Jag lyckas inte att få in_file att fungera i funktionen encrypt_file(in_file, out_file): Filen namn.csv ligger i samma mapp som filen med dessa funktioner
def encrypt_file(in_file, out_file):
fr = open(in_file, "r")
file_read = fr.read()
fr.close()
encrypt_file_read = text_encryption_function.encrypt(file_read)
fw = open(out_file, "w")
encrypt_file_copy = fw.write(encrypt_file_read)
fw.close()
return encrypt_file_copy
def user_dialogue():
out_file = (input("Name of new encrypted file: "))
done = False
while not done:
try:
input_file = open(input("Name of file to be encrypted: "), "r")
except Exception as error:
print("That resulted in an input/output error, please try again!", error)
else:
encrypt_file(input_file, out_file)
done = True
print("Encryption completed!")
Något else tycker jag inte du ska ha i try-satsen. Så här brukar man skriva.
while True:
try:
input_file=open...
encrypt...
print...
break
except ...
print...
Du talar inte om på vilket sätt det inte funkar. I def encrypt finns en konstig grej. encrypt_file_copy=fw.write...
fw.write returnerar bara None, ingen kopia.
Det känns rimligt att skippa elsesatsen. Var lägger man den informationen istället?
Här är mina tankar kring koden Bild på kodfönstret
Här blir resultatet (observera på första bilden att namn.csv finns ute till vänster Detta blir resultatet