Sto imparando Python. Ho una funzione readwrite (nome file, elenco). nomefile è di tipo stringa. lista è una lista contenente stringhe da scrivere nel file.Funzioni di Python Confusione
Ho una semplice chiamata di funzione come questa:
fname = 'hello.txt'
readwrite('xx'+fname, datalist)
sto affrontando problema che quando stampo il valore argomento filename all'interno della definizione di funzione, ottengo ciao.txt piuttosto che xxHello.txt - un cosa strana che non mi aspettavo
quando faccio lo stesso da commadline, per una funzione di esempio, funziona bene. Mi chiedo cosa mi manca laggiù.
Qui s il codice:
def readwrite(fileName, list):
print 'arg file=',filename
curdir = os.getcwd();
fullpath = os.path.join(curdir, filename);
print('full path calculated as: '+fullpath);
fileExist = os.path.exists(fullpath);
if(fileExist):
print 'file exists and opening in \'arw\'mode'
fiel = open(fileName, 'arw') # valid only if exists
else:
print "file doesnt exist; opening in \'w\'mode"
fiel = open(fileName, 'w') # if it doesnt exist, we cant open it for reading as nothing to read.
for line in list:
fiel.write('\n'+line)
print 'position of new pointer = ', fiel.tell()
- codice principale chiamando la funzione:
filename = 'put.txt'
strList = ['hello', 'how', 'are', 'you']
readwrite(('xx'+filename), strList);
- seconda linea in fn def di stampa 'file di arg =', il nome del file stampe ciao.txt anziché xxHello.txt
Questa è la mia confusione sul perché si sta comportando in modo imprevisto o sto facendo qualcosa di sbagliato.
Non utilizzare 'list' come nome di variabile. In questo modo si sta sovrascrivendo il riferimento alla 'lista' della classe incorporata. – rplnt
@aix ha già risposto sulla sensibilità del caso, vorrei solo aggiungere che "elenco" è una funzione incorporata e di solito non è una buona idea usarlo come nome per argomenti o variabili. – fortran
grazie per il tuo feedback big gyz – Abhinav