Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [PYTHON] Gestione file

  1. #1

    [PYTHON] gestione file....

    E' un problema che mi si è presentato nell'implementazione di un determinato algoritmo se qualcuno mi da una mano...

    il problema è trasformare un oggetto python LISTA (di liste)
    es: L=[[1,2,3],[4,5,6],[7,8,9]] in un file txt nel formato leggibile
    es:
    1 2 3
    4 5 6
    7 8 9

    stamparlo sulla shell è banale...

    for row in L:
    for data in row:
    print data,
    print

    per stampare su file in teoria dovrei usare al posto del print
    f.write(data) il punto è che data deve essere una stringa non posso
    passargli direttamente l'oggetto lista....
    Come posso fare?
    Grazie

  2. #2
    L e' la lista, row e' la sottolista, data e' il numero della sottolista. Prova a fare:

    L = [[1,2,3],[4,5,6],[7,8,9]]
    f = file('test', 'w')
    for row in L:
    for data in row:
    f.write(str(data)+' ')
    f.write('\n')
    f.close()


  3. #3
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    In maniera più compatta (e più efficiente):

    codice:
    f.write('\n'.join(['\t'.join(map(str, row)) for row in l]))
    Linux user number 403381

    Stop TCPA!

  4. #4
    GRAZIE!!!!!

  5. #5
    la sintassi fa paura tanto è compatta, hai fatto in una riga
    quello che io ho fatto in...

    i=-1
    for x in range(len(L)):
    i=i+1
    j=-1
    for x in range(len(L)):
    j=j+1
    f.write(str(L[j][i]))
    f.write(' ')
    f.write('\n')

    vorrei chiederti come utilizzando la tua sintassi posso scrivere
    le sottoliste anzichè per righe per colonne,
    da me basta invertire gli indici i e j, ma sarebbe decisamente
    meglio adottare la sintassi che mi hai proposto.
    Thanks
    W i forum!!!

  6. #6
    Forse prima è meglio dirvi dove voglio arrivare:

    Devo creare un eseguibile che legga da tastiera un numero = "indice di colonna"
    poi spiego cosa rappresenta;
    passatogli tale parametro deve leggere il file train.txt, esso
    è un matrice di numeri MxN una delle sue colonne è appunto quella delle
    classi, il parametro che gli ho passato da tastiera e proprio l'indice N di tale colonna.
    Il mio codice deve generare a partire dalla matrice sorgente (train.txt)
    50 file train_rsm.0.txt, train_rsm.1.txt, ..... train_rsm.49.txt
    Ciascuno dei 50 file è una sottomatrice della sorgente avente
    stesso numero di righe M, ma numero di colonne pari a N/2 più la colonna
    delle classi, le N/2 colonne devono essere scelte a caso tra le N.
    Pensavo fosse abbastanza semplice, anche per me che il python sto iniziando
    a masticarlo ora, ma invece...
    non capisco dove sbaglio e la shell non mi è di grande aiuto
    Conto su di voi...

    Il mio codice:

    from string import split
    from whrandom import randint

    C = raw_input("Enter class feature: ")

    A = open('/set/train.txt','r') #matrice sorgente
    Z=A.readlines()
    L=[split(x) for x in Z]
    A.close()
    #in L ci sono le righe del train
    #C=colonna delle classi
    z=[]
    a=[]
    j=0
    maxL0=len(L[0])
    k=(maxL0-1)//2
    r=range(maxL0+1)
    for x in range(k):
    w=randint(0,maxL0)
    n=r[w]
    for x in range(len(L)):
    a.append(L[j][n])
    j=j+1
    z.append(a)
    a=[]
    j=0
    r[w:w+1]=[]

    for x in range(len(L)):
    a.append(L[j][C])
    j=j+1
    z.append(a)

    #in z ci sono le colonne scelte random

    f=open('/set.0/set_rsm.0/train_rsm.0.txt','w')

    u=-1
    for x in range(len(z)):
    u=u+1
    v=-1
    for x in range(len(z)):
    v=v+1
    f.write(str(z[v][u]))
    f.write(' ')
    f.write('\n')

    f.close()

  7. #7
    Ho risolto, almeno in parte, riesco a scrivere un file, il codice non è compatto e dal punto di vista dello stile fa veramente schifo però funziona... c'e' ancora da lavorare!!!
    GRAZIE a FOX82 e LETHALMAN per il prezioso aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.