Hei vielä. Ei se ongelmani vielä ihan ratkennutkaan. Kiitos neuvosta tuohon aiempaan kysymykseeni, sillä pääsin jo pitkälle. Nyt siis osaan tehdä tuon uuden kansion mieleiseeni paikkaan, mutta vielä olisi probleema. Minulla on kansio nimellä Ankka ja siellä on .txt tiedosto Aku, siis Aku.txt. Nyt luon uuden kansion nimellä Hanhi. Minkälaisella tempulla voisin kopioida tuon Akun Hanhikansioon? Tuohon alle sommittelin jotain, näin saan kirjoitettua Ankka tiedostoon lisää Aku.txt materiaalia. Voisiko jollain pikku jipolla, saada kohdekansio muutettua Hanheksi?
tiedosto = open("Aku.txt", "w") # Avaa Ankkatiedostosta Akun tiedosto.writelines(Akudataa) tiedosto.close()
Netin mukaan shutilista löytyy tapoja tiedoston kopiointiin: https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python
Hei ja kiitos vinkistä, voisitko selittää tämän minulle.
import shutil shutil.copy2('/src/dir/file.ext', '/dst/dir/newname.ext') # complete target filename given shutil.copy2('/src/file.ext', '/dst/dir') # target filename is /dst/dir/file.ext
Kiitos sinulle:-)
Mitä tuossa siis on selittämistä? Jos et osaa englantia niin kommentit suomennettuna
shutil.copy2('/src/dir/file.ext', '/dst/dir/newname.ext') # kohteen tiedostonimi määritelty kokonaan shutil.copy2('/src/file.ext', '/dst/dir') # kohteesta vain polku määritelty, joten tiedostonimeksi tulee /dst/dir/file.ext
Kiitos sinulle. Ehkä tuosta ei ollut apua minulle? Asia olisi yksinkertaisimmillaan sellainen, että miten voin kopioida .txt tiedoston kokonaan toiseen kansioon, mikä voi olla missä vain. Osaisitko auttaa minua?
Kiitos.
Kanarianlintu kirjoitti:
miten voin kopioida .txt tiedoston kokonaan toiseen kansioon, mikä voi olla missä vain. Osaisitko auttaa minua?
Tuossahan on kaksikin esimerkkiä (kaksi riviä) siitä, miten .ext -tiedosto kopioidaan "kokonaan toiseen kansioon, mikä voi olla missä vain."
Kyse ei varmasti ole siitä, ettetkö osaisi kirjoittaa .ext tilalle .txt, joten kerro nyt juurta jaksain mikä noissa esimerkeissä on ongelmana?
Kiitos viestistäsi. Ok, nyt alan ehkä käsittämään, en kylläkään vielä ole päässyt kokeilemaan. Onko siis .ext sama kuin kansio mihin .txt tiedosto voidaan sijoittaa:-)
.ext (extension) kuvaa tiedoston päätettä. kuten .txt tai .docx . Eli yleistermi kuvaamaan mitä tahansa tiedostopäätettä
Hei, ei vain ymmärrä, olen ihan oikeasti yrittänyt selvittää mitä tämä oikein tarkoittaa ja kokeillutkin.
shutil.copy2('/src/dir/file.ext', '/dst/dir/newname.ext')
onko tuo src kansio samassa paikassa kuin pythonin luomat tiedostot ja onko tuo dir joku toinen kansio tuon sisällä ja onko tuo file.ext esimerkiksi .txt tiedosto sen sisällä? Sitten tuo loppuosa. Onko dst kansio samassa paikassa kuin pythonin luomat tiedostot ja onko dir myös kansio, joka on sen sisällä ja onko sen sisällä esimerkiksi .txt tiedosto newname.ext?
Anteeksi tyhmyyteni:-)
shutil.copy2('/lähdekansio/jokualikansio/kopioitavatiedosto.pääte', '/kohdekansio/alikansio/tiedostonnimijokaluodaan.pääte')
Juurta jaksain selitettynä sinulla on python skripti kansiossa C:/Python/kokeilu/ tämän kansion alla sinulla on kansio Ankka/ ja Hanhi/ Ensimmäisessä on tiedosto Aku.txt, jonka haluat kansioon Hanhi/. Jos tämä selitys on oikein, niin sitten sinun tulee kutsua funktiota näin:
shutil.copy2("Ankka/Aku.txt", "Hanhi/Aku.txt");
Ratkaistaanko tässä edes oikeaa ongelmaa? Puuttuuko perusymmärrys tiedostoista ja hakemistoista (kansioista)?
Hakemistossa A olevaa tiedostoa B merkitään polulla A/B. Esimerkiksi hakemistossa Hanhi olevaa tiedostoa Aku.txt merkitään polulla Hanhi/Aku.txt. (Windowsissa /-merkin sijaan voi käyttää myös \-merkkejä, mutta yleensä tämä ei kannata.)
Polku voi olla absoluuttinen. Windowsissa absoluuttinen polku alkaa usein asematunnuksesta (kuten C:), eli polku voi olla esimerkiksi C:/tiedostot/Aku.txt. Monissa muissa järjestelmissä absoluuttinen polku alkaa /-merkistä, joka tarkoittaa tiedostojärjestelmän juurihakemistoa, eli polku voi olla vaikkapa /home/Kanarianlintu/Aku.txt.
Polku voi olla suhteellinen, jolloin polun alkuun lisätään automaattisesti nykyinen työskentelyhakemisto (working directory) eli yleensä sijanti, josta ohjelma on käynnistetty. Suhteellisen polun tunnistaa siitä, että se ei ole edellä kuvatulla tavalla absoluuttinen (eli alussa ei ole /-merkkiä eikä asematunnusta kuten "C:"). Esimerkiksi Aku.txt ja Hanhi/Aku.txt ovat suhteellisia polkuja.
Suhteellisessa polussa ylempää hakemistoa merkitään kahdella pisteellä, eli esimerkiksi sijainnin ollessa C:/ylempi/alempi voidaan ..-merkinnällä viitata hakemistoon C:/ylempi (ja tiedosto ../Aku.txt tarkoittaisi tiedostoa C:/ylempi/Aku.txt).
Jos ohjelma on vaikkapa C:/ohjelma/koodi.py ja se suoritetaan hakemistossa C:/ohjelma, tapahtuu seuraavaa: Jos ohjelma luo tiedoston Aku.txt, se luo oikeasti tiedoston C:/ohjelma/Aku.txt. Jos ohjelma siirtää tiedoston sijaintiin Hanhi/Aku.txt, sijainniksi tulee C:/ohjelma/Hanhi/Aku.txt. Jos taas ohjelma siirtää tiedoston sijaintiin ../Hanhi/Aku.txt, sijainniksi tulee C:/ohjelma/../Hanhi/Aku.txt, jossa .. kumoaa polusta edellisen osan ja lopputulos onkin siis C:/Hanhi/Aku.txt.
Jos haluat tallentaa tiedostoon Hanhi/Aku.txt, voit yksinkertaisesti kirjoittaa oikean polun jo silloin, kun luot tiedoston.
tiedosto = open("Hanhi/Aku.txt", "w")
Jos haluat siirtää tiedostoa, siihen sopii parhaiten os.rename, joka ei luo uutta hakemistoa, tai os.renames, joka luo tarvittaessa uuden hakemiston ja yrittää poistaa vanhan.
os.rename("Aku.txt", "Hanhi/Aku.txt")
Edellä mainittu shutil.copy2 kopioi tiedoston, jolloin myös alkuperäinen tiedosto säilyy.
Hei ja kiitos kaikille, olen vain tällainen blondi:-)
Kiitos erityisesti Metabolixille, juuri tätä tietoa hain, voi kiitos:-)
Aihe on jo aika vanha, joten et voi enää vastata siihen.