Estoy aprendiendo Python. Tengo una función readwrite (nombre de archivo, lista). nombre de archivo es de tipo cadena. lista es una lista que contiene cadenas para ser escritas en el archivo.Funciones de Python Confusión
que tienen una simple llamada de función como esta:
fname = 'hello.txt'
readwrite('xx'+fname, datalist)
Estoy frente a un problema que al imprimir el valor del argumento de nombre de archivo dentro de la definición de la función, me sale hola.txt en lugar de xxHello.txt - una Lo extraño es que no esperaba
cuando hago lo mismo desde commadline, para una función de muestra, funciona bien. Me pregunto qué me estoy perdiendo allí.
Aquí es el código:
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()
- código principal llamando a la función:
filename = 'put.txt'
strList = ['hello', 'how', 'are', 'you']
readwrite(('xx'+filename), strList);
- segunda línea en fn def de impresión 'archivo arg =', nombre de archivo imprime hello.txt en lugar de xxHello.txt
Esta es mi confusión porque ¿por qué se está comportando de manera extraña o estoy haciendo algo mal?
No use 'list' como nombre de variable. Al hacerlo, está sobrescribiendo la referencia a la 'lista' de clase incorporada. – rplnt
@aix ya ha respondido sobre la sensibilidad a las mayúsculas y minúsculas, me gustaría simplemente agregar que "lista" es una función incorporada y no es una buena idea usarla como nombre para argumentos o variables. – fortran
gracias por tu comentario gran gyz – Abhinav