Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Kansion luominen

Kanarianlintu [11.02.2018 17:46:49]

#

Hei. Voisiko joku kertoa, miten voin laatia esimerkiksi työpöydälle kansion. Osaan kyllä luoda ja tallettaa .txt tiedostoja, mutta en osaa tehdä niille kansiota.

Kiitos jos voitte auttaa:-)

Jaska [11.02.2018 18:18:15]

#

Ilmeisesti os.makedirs auttaa: https://stackoverflow.com/questions/12517451/automatically-creating-directories-with-file-output

Kanarianlintu [11.02.2018 18:42:58]

#

filename = "/foo/bar/baz.txt"¨
os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, "w") as f:
    f.write("FOOBAR")

Ilmeisesti tarkoitit tätä. Mitenköhän tämä toimii? Tuo foo/bar ovat ilmeisesti kansioita joissa tuo baz.txt tiedosto on?

Minulla olisi siis vain tarve luoda yksi kansio, johon voin sitten myöhemmin lisätä .txt tiedostoja.

Jaska [11.02.2018 21:21:07]

#

Kokeilin koneellani seuraavaa koodia, jonka nimesin demo.py

import os
import errno

filename = "./demo/"
if not os.path.exists(os.path.dirname(filename)):
    try:
        os.makedirs(os.path.dirname(filename))
    except OSError as exc: # Guard against race condition
        if exc.errno != errno.EEXIST:
            raise

Tämä teki kansion demo ajettuun hakemistoon:

jaakko@jaakko-Aspire-E1-572:~/Desktop/Kaikki/Programming$ ls
ahdruud2.py     demo.py         lastchecked.txt  md5.py                 piinkova.py       polynomial.py
ahdruud.py      dijkstra.py     libgraph-1.0.2   openssl-1.0.1g         piinkova.pyc      __pycache__
android-studio  dist            luvut.py         openssl-1.0.1g.tar.gz  piinkova.py.save  result.txt
baz.txt         kello.py        md5              out.txt                piinkova.spec     testi.txt
build           lamput.sage.py  md5.c            piinkova.c             piinkova.txt      vaaleihinaikaa.py
jaakko@jaakko-Aspire-E1-572:~/Desktop/Kaikki/Programming$ pypy demo.py
jaakko@jaakko-Aspire-E1-572:~/Desktop/Kaikki/Programming$ ls
ahdruud2.py     demo         lamput.sage.py   md5.c                  piinkova.c        piinkova.txt   vaaleihinaikaa.py
ahdruud.py      demo.py      lastchecked.txt  md5.py                 piinkova.py       polynomial.py
android-studio  dijkstra.py  libgraph-1.0.2   openssl-1.0.1g         piinkova.pyc      __pycache__
baz.txt         dist         luvut.py         openssl-1.0.1g.tar.gz  piinkova.py.save  result.txt
build           kello.py     md5              out.txt                piinkova.spec     testi.txt
jaakko@jaakko-Aspire-E1-572:~/Desktop/Kaikki/Programming$

Kanarianlintu [12.02.2018 08:35:20]

#

Hei, toimii:-)

Eikö se ole niin, että tämä alla oleva koodi voidaan jättää ohjelman alkuun, sitä ei tarvita kuin ohjelmaa avatessa, kansion luomisen voi tehdä myöhäisemmässä vaiheessa?

import os
import errno

Kiitos sinulle.

Jaska [12.02.2018 16:23:32]

#

Kerran tarvittavia asioita tarvitsee kirjoittaa koodiin vain kerran. Olen kuitenkin tottunut kirjoittamaan loogiset kokonaisuudet omiksi funktioikseen. Eipä sitä ikinä tiedä tuleeko joskus samantapainen tilanne, jolloin koodia on helppo kopioida.

Kanarianlintu [12.02.2018 19:43:15]

#

KIITOS:-)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta