Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  9 334
Hei Folkens.

Jeg har en .CSV fil med 5 kolonner ( A, B, C, D, E ).
Jeg trenger å få opprettet en mappe for alle linjer i kolonne A. Kolonne A inneholder navn på kurs som jeg skal ha overført til en mappe på PC'en.

Hva er enkleste metode her? Python, PowerShell, PhP ? Og hva er en eventuell fremgangsmåte?

Har noen hundre linjer her og vil helst ikke gjøre dette manuelt
Python Bør også kanskje legge inn sjekk på om mappe allerede eksisterer

Kode

import pandas as pd
import os

#Les CSV til dataframe. Dette er noe ala. en tabell, bare mer avansert.
df = pd.read_csv(filnavn,header=True,sep=",")

# Hent verdiene i kolonne A til liste:
valsA = list(df["A"].values)

# Hent unike verdier:
valsA = list(set(valsA))

#Lag mapper. Les dokumentasjon til os.mkdir mtp. rettigheter osv. til nye mapper.
for x in valsA:
    os.mkdir("mapper/"+x)
Sist endret av Jonta; 1 uke siden kl. 14:34. Grunn: [code]-tags lagt til
Trådstarter
Hei bocca og takk.

Jeg har aldri vært borti Python. Så har da noen spørsmål her.

1. Hvor legger inn lenken til filen? Blir dette der det står "filnavn" ?
2. Mappene trenger kun vanlige rettigheter. Trenger jeg å gjøre noen endringer i scriptet for dette?
3. Hvordan kjører jeg dette? Aldri brukt Python, så dette vet jeg ikke noe om
Mattoholiker
Markonan's Avatar
1: Ja
2: Nei
3: Installer python 2.7 hvis du ikke har gjort dette. Så kjører du dette i CMD:

HTML-kode

C:\Python27\python.exe C:\Users\Username\Desktop\ditt_script.py
Sist endret av Markonan; 1 uke siden kl. 12:41.
Trådstarter
ok Takk Markonan.

Jeg har installert nyeste Python, men denne ligger ikke under C. Kan heller ikke finne den under noen andre mapper. Men finner den under appdata->local->programs etc

Edit:

Kjørte nå scriptet som ser sånn her ut:

Kode

import pandas as pd
import os

df = pd.read_csv('C:Users/****/Desktop/lms-external.csv')

valsA = list(df["A"].values)

valsA = list(set(valsA))

for x in valsA:
	os.mkdir("C:/Users/****/Desktop/scormlms/"+x)

Og får da denne feilmeldingen:

Kode

C:\Users\*****>C:\Users\*****\AppData\Local\Programs\Python\Python37-32\python.exe C:\Users\*****\Desktop\importcsv.py
Traceback (most recent call last):
  File "C:\Users\*****\Desktop\importcsv.py", line 4, in <module>
    df = pd.read_csv('C:Users/*****/Desktop/lms-external.csv')
  File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\parsers.py", line 685, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\parsers.py", line 457, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
  File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\parsers.py", line 895, in __init__
    self._make_engine(self.engine)
  File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\parsers.py", line 1135, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\parsers.py", line 1917, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas\_libs\parsers.pyx", line 382, in pandas._libs.parsers.TextReader.__cinit__
  File "pandas\_libs\parsers.pyx", line 689, in pandas._libs.parsers.TextReader._setup_parser_source
FileNotFoundError: [Errno 2] File b'C:Users/*****/Desktop/lms-external.csv' does not exist: b'C:Users/*****/Desktop/lms-external.csv
Sist endret av Nikon01; 1 uke siden kl. 12:54. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Sitat av Nikon01 Vis innlegg
Jeg har installert nyeste Python, men denne ligger ikke under C. Kan heller ikke finne den under noen andre mapper. Men finner den under appdata->local->programs
Vis hele sitatet...
Jepp, nyeste python (3.x) legger seg i appdata. Python 2.7 hadde havna under C:/Python27

Sitat av Nikon01 Vis innlegg
d.read_csv('C:Users/****/Desktop/lms-external.csv')
Vis hele sitatet...
Mangler en / etter C:
Trådstarter
Begge filene ligger i samme mappe nå, og kjører jeg denne:

Kode

import pandas as pd
import os


df = pd.read_csv("lms-external.csv")

valsA = list(df["A"].values)

valsA = list(set(valsA))

for x in valsA:
	os.mkdir("scormlms/"+x)
får jeg fortsatt feilmelding:

Kode

Traceback (most recent call last):
  File "import.py", line 5, in <module>
    df = pd.read_csv("lms-external.csv")
  File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\parsers.py", line 685, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\parsers.py", line 463, in _read
    data = parser.read(nrows)
  File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\parsers.py", line 1154, in read
    ret = self._engine.read(nrows)
  File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\parsers.py", line 2059, in read
    data = self._reader.read(nrows)
  File "pandas\_libs\parsers.pyx", line 881, in pandas._libs.parsers.TextReader.read
  File "pandas\_libs\parsers.pyx", line 896, in pandas._libs.parsers.TextReader._read_low_memory
  File "pandas\_libs\parsers.pyx", line 950, in pandas._libs.parsers.TextReader._read_rows
  File "pandas\_libs\parsers.pyx", line 937, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas\_libs\parsers.pyx", line 2132, in pandas._libs.parsers.raise_parser_error
pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 49, saw 2

Kode

sed s/",.*"//g < csvfil | xargs mkdir
Installer en wsl distribusjon og kjør kommandoen ovenfor.
Nikon1: Ser ut som det er noe som tolkes feil på linje 49 i CSV-fila di. Kan det være et tegn som ikke er encoded og tolkes feil?
Bruker å kjøre python 3 ved å laste ned Anaconda Python og så kjøre python fra anaconda-prompt,men skal selvsagt ikke være noe prob med å installere vanlig.

Vanskelig å si uten å se på fila di.
- Separerers verdier med komma, mellomrom, tab eller semikolon? Må legge til feks. argument sep=";" på read_csv.
- er det linjer som skal skippes på starten av fila? Bruk skiprows = x. Evt på slutten? (Bruk nrows)
- Er den øverste linja brukt til kolonneoverskrifter? Bruk i såfall header=True
- Er det spesielle tegn i tekstfila? Bruk encoding='utf-8' (eller noe som passer)

Prøv også engine='python' eller engine='c', kan være noe kluss med pythoninstallasjonen som gjør at du må gjøre dette.


Hvis du lager en ny csvfil:

A,B
1,2
3,4

Får du lest den inn med pandas.read_csv?

Ville foresten ved nærmere ettertanke også skiftet ut "mappe/"+x med "mappe/+str(x) eller "mappe/{0:}".format(x) i tilfelle pandas caster kolonnen til noe annet en string.

https://pandas.pydata.org/pandas-doc....read_csv.html
Sist endret av bocca; 1 uke siden kl. 15:08.