ValueError: literal inválido para int() con base 10: ''
Estoy creando un programa que lee un archivo y si la primera línea del archivo no está en blanco, lee las cuatro líneas siguientes. Los cálculos se realizan en esas líneas y luego se lee la siguiente línea. Si esa línea no está vacía continúa. Sin embargo, estoy recibiendo este error:
ValueError: invalid literal for int() with base 10: ''.
Está leyendo la primera línea pero no puede convertirla en un entero.
¿Qué puedo hacer para solucionar este problema?
El código:
file_to_read = raw_input("Enter file name of tests (empty string to end program):")
try:
infile = open(file_to_read, 'r')
while file_to_read != " ":
file_to_write = raw_input("Enter output file name (.csv will be appended to it):")
file_to_write = file_to_write + ".csv"
outfile = open(file_to_write, "w")
readings = (infile.readline())
print readings
while readings != 0:
global count
readings = int(readings)
minimum = (infile.readline())
maximum = (infile.readline())
247
3
Forma pitónica de iterar sobre un archivo y convertirlo a int:
Lo que intentas hacer es un poco más complicado, pero todavía no es sencillo:
De esta manera procesa 5 líneas a la vez. Usa
h.next()
en lugar denext(h)
antes de Python 2.6.La razón por la que tienes
ValueError
es porqueint
no puede convertir una cadena vacía en un entero. En este caso necesitarías o bien comprobar el contenido de la cadena antes de la conversión, o bien exceptuar un error:Hay un problema con ese código. Lectura" es una nueva línea leída desde el archivo - es una cadena. Por lo tanto, no debe compararla con 0. Además, no puede convertirla en un entero a menos que esté seguro de que lo es. Por ejemplo, las líneas vacías producirán errores aquí (como seguramente ha descubierto).
¿Y por qué necesita el recuento global? Eso'es ciertamente un mal diseño en Python.
Estoy creando un programa que lee un archivo
Algo así debería funcionar: