Gå til innhold

[Løst] [Python] Skrive til fil


Anbefalte innlegg

Hei,

 

jeg prøver å lære meg Python og har et spm til en kode jeg har laget.

 

Koden:

name = raw_input("What is your name?\n")

age = raw_input("How old are you?\n")

favcolor = raw_input("What is your favorite color?\n")

 

fileObj = open("./test/test.log","w")

fileObj.write(name)

fileObj.write(age)

fileObj.write(favcolor)

fileObj.close()

 

Jeg ønsker å få tittelen i filen å (name, age og favcolor) I dag får jeg kun det jeg skriver inn.

Lenke til kommentar
Videoannonse
Annonse

Bruker with open() da lukkes fileobjektet auto.

Trenger ikke og bruke close()

q_name = 'What is your name?\n'
q_age = 'How old are you?\n'

name = raw_input(q_name)
age = raw_input(q_age)

with open('test.txt', 'w') as f:
   f.write('%s%s\n%s%s' % (q_name,name,q_age,age))

Output.

What is your name?
Donal
How old are you?
100

Endret av SNIPPSAT
  • Liker 1
Lenke til kommentar

# First, define questions to ask
questions = [
   "What is your name?", 
   "What is your quest?", 
   "What is the air-speed velocity of an unladen swallow?",
]

# Add space at end of each question, looks nicer
questions = [x + " " for x in questions]

print "\nExample 1 (writes to example1.txt):"
with open('example1.txt', 'w') as f:
   for question in questions: #Loop through questions
       answer = raw_input(question) #Ask question
       line = "%s %s\n" % (question, answer) #Create a line for the file
       f.write(line) #Write line to file

print "\nExample 2 (writes to example2.txt):"
with open('example2.txt', 'w') as f: f.write("\n".join(["%s %s" % (q, raw_input(q)) for q in questions]) + "\n")

Du kan også spørre først, og så legge svarene i en liste. Som kan brukes senere i programmet.

qa = [(q, raw_input(q)) for q in questions]
print "And now for the replay"
for question, answer in qa:
print "->", question, answer

 

Edit: litt mer info om denne linjen med kode :

line = "%s %s\n" % (question, answer) #Create a line for the file

Første %s der blir byttet ut med første i () etterpå, som er "question" variablen. Så mellomrom, så en ny %s som blir byttet ut med nr 2 i (), som er "answer" - så en \n for ny linje. Man kunne for eksempel bruke "%s\n----------\n%s\n\n" for å få en annen formatering på linjene som skrives til filen. Eller

line = "%s\n%s\n%s\n\n" % (question, "-" * len(question), answer)

for å få "---" delen til å være like lang som spørsmålet.

 

Man har også string.strip() som er fin for å fjerne ekstra mellomrom (og newlines og diverse annnet rart) på begynnelsen og slutten av tekst.

 

Edit2:

String formatting dokumentasjon

 

Man kunne også gjort :

 

line = "%(question)s\n%(line)s\n%(answer)s\n\n" % {
    'question': question, 
    'line': "-" * len(question.strip()), 
    'answer': answer,
}

Endret av Terrasque
Lenke til kommentar

Du har jo fått noen svar med smart kode... Men jeg ser for meg at du trenger noe enklere. Hvorfor ikke gjøre det på enklest mulig måte:

 

name = raw_input("What is your name?\n")
age = raw_input("How old are you?\n")
favcolor = raw_input("What is your favorite color?\n")

fileObj = open("./test/test.log","w")
fileObj.write("Name: " + name +"\n")
fileObj.write("Age: " + age + "\n")
fileObj.write("Colour: " + favcolor +"\n")
fileObj.close()

 

--

Eppenepp

Lenke til kommentar

Takk til dere alle som bidro til denne tråden. Det fine er at jeg fikk se flere mulige måter å gjøre dette på noe som gjør at jeg kan ta de i bruke og se måter å dette på. Dette gir meg god læring.

 

Takk :yes:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...