Python: spara fil med variabelt filnamn

Permalänk
Medlem

Python: spara fil med variabelt filnamn

Jag håller på och gör ett skript där användaren väljer ett antal parametrar, sen ersätts vissa textsnuttar med dessa parametrarna och slutligen är tanken att en outputfil ska skapas som har ett namn som speglar vad man har valt. Allting fungerar utom just det sistnämnda.

Exempel:

Välj en diameter
> 5
Välj en längd
> 3

Då kan man tänka sig att filen diam5length3.txt ska skapas.

Om man dock använder sig av "file = open('dump.txt', 'w')" så måste man ange en specifik textsträng, inte något som innehåller variabler.

Hur gör man?

Permalänk
Medlem
Skrivet av Halldin:

Kan inte python, men kan det inte vara så att du bara behöver göra en String-variabel som du sedan ändrar på valfritt sätt och sedan använder där du ska specificera filnamn? (Det är så man gör i Java iaf)
Någon får gärna rätta mig om jag har fel.

Visa signatur

2600k 4,5 - Asus P8Z77-V PRO - ASUS 660 ti DCII 2 GB - 16 GB 1600 MHz - 120 GB SSD - 1000 GB HDD - 750W 80+

QPAD mk-50 - QPAD 5K - Sennheiser PC 360

Citera mera!

Permalänk
Inaktiv

# -*- coding: cp1252 -*-
diameter=input("Diameter:")
length=input("Längd:")
fileName="diam%slength%s.txt" %(diameter, length)
fil=open(fileName, "w")
fil.close()

Permalänk
Medlem
Skrivet av anon152042:

# -*- coding: cp1252 -*-
diameter=input("Diameter:")
length=input("Längd:")
fileName="diam%slength%s.txt" %(diameter, length)
fil=open(fileName, "w")
fil.close()

Thx! Funkar fint.

Kom på en ny fråga: om den istället ska skriva till en mapp som inte finns, säg diam%s/length%s.txt, hur gör man då? Just nu får jag bara upp fel om att mappen inte existerar.

Permalänk
Inaktiv
Skrivet av Halldin:

Thx! Funkar fint.

Kom på en ny fråga: om den istället ska skriva till en mapp som inte finns, säg diam%s/length%s.txt, hur gör man då? Just nu får jag bara upp fel om att mappen inte existerar.

# -*- coding: cp1252 -*- import os diameter=input("Diameter:") length=input("Längd:") dirName="diam%s" %(diameter) try: os.makedirs(dirName) except: pass fileName="diam%s/length%s.txt" %(diameter, length) fil=open(fileName, "w") fil.close()

Permalänk
Medlem
Skrivet av anon152042:

# -*- coding: cp1252 -*- import os diameter=input("Diameter:") length=input("Längd:") dirName="diam%s" %(diameter) try: os.makedirs(dirName) except: pass fileName="diam%s/length%s.txt" %(diameter, length) fil=open(fileName, "w") fil.close()

Gött! Tackar.

Permalänk
Medlem

Helt annan fråga:

Finns det något sätt att bash scripta (eller annat) så att den skriver in ett värde och trycker enter?

Nu uppges man ju manuellt välja en diameter, sen en höjd osv. Men om man skulle vilja scripta att den väljer allt det där automatiskt för ett visst antal fall?

Alltså:

Python bla.py
Ange diam.
>30
Ange höjd
>10

Python bla.py
Ange diam.
>31
Ange höjd
>10

Har testat echo, \n och \r men den kör scriptet, väntar på input och gör inte dom sakerna förrän efter scriptet har körts.

Permalänk
Medlem
Skrivet av Halldin:

Helt annan fråga:

Finns det något sätt att bash scripta (eller annat) så att den skriver in ett värde och trycker enter?

Nu uppges man ju manuellt välja en diameter, sen en höjd osv. Men om man skulle vilja scripta att den väljer allt det där automatiskt för ett visst antal fall?

Alltså:

Python bla.py
Ange diam.
>30
Ange höjd
>10

Python bla.py
Ange diam.
>31
Ange höjd
>10

Har testat echo, \n och \r men den kör scriptet, väntar på input och gör inte dom sakerna förrän efter scriptet har körts.

Då behöver du ju bara sätta variablerna och inte använda nån form av input?
Eller hur menar du?

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Medlem
Skrivet av NoPaiN^:

Då behöver du ju bara sätta variablerna och inte använda nån form av input?
Eller hur menar du?

Saken är att jag helst inte vill skriva om skriptfilen jag redan har, vill att den ska vara så generell som möjligt. Medans de här variablerna kan vara begränsade inom rätt specifika intervall för olika fall.

Permalänk
Medlem
Skrivet av Halldin:

Saken är att jag helst inte vill skriva om skriptfilen jag redan har, vill att den ska vara så generell som möjligt. Medans de här variablerna kan vara begränsade inom rätt specifika intervall för olika fall.

Förstår fortfarande inte riktigt vad du menar
Du vill att den ska ha stöd för antingen automatisk eller inmatning från tangentbordet via användaren?
Beskriv gärna dina olika scenario, vad du är ute efter?

Du måste ju ha nån form av koll i din kod, för att hantera två olika fall av händelser.

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770