Volver a la lista

Leer y escribir archivos de datos experimentales con Python.

Cómo leer y escribir datos experimentales en formato CSV/TSV con Python. Guía introductoria sobre el manejo de archivos para investigadores en biología.

Principiante
|
60min
|
Verificado (2026-06)
CSVEntrada y salida de archivosDatos experimentalesTSVAnálisis sintáctico.open
Progreso0/7 (0%)

Lectura y escritura de archivos de datos experimentales con Python

Al finalizar este tema

Podrá leer archivos de texto y CSV con Python, filtrar los datos y guardar los resultados en un nuevo archivo.


¿Por qué es importante la entrada y salida de archivos?

Los datos experimentales son, en última instancia, archivos. Se exportan como CSV desde los equipos, se guardan los resultados del análisis en formato de texto y se comparten con otros investigadores mediante archivos. Aunque pueden abrirse en Excel, resulta difícil hacerlo manualmente cuando hay miles de muestras.

Al trabajar con archivos en Python, una tarea como extraer solo las muestras que cumplen ciertas condiciones de un archivo CSV de 10 000 líneas puede resolverse con solo cinco líneas de código.

Lectura de archivos de texto: open()

Es el método más básico para leer archivos en Python.

python
with open("protocol.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)

Palabras clave:

  • open("nombre_de_archivo", "modo") — Función para abrir archivos
  • "r" — Modo de lectura (read)
  • encoding="utf-8" — Para evitar errores de codificación (caracteres especiales)
  • with ... as f: — Abre el archivo de forma segura y lo cierra automáticamente al finalizar el bloque

Si no se utiliza with, se debe llamar a f.close() manualmente. Al igual que se apaga el equipo tras un experimento, el archivo debe cerrarse tras su uso. with realiza esto de forma automática.

Resumen de modos de archivo

ModoSignificadoAnalogía
"r"Lectura (valor por defecto)Abrir un cuaderno de notas para leer
"w"Escritura (sobrescribe el contenido existente)Escribir en un cuaderno nuevo desde el principio
"a"Anexar (escribe al final del contenido existente)Añadir información en la última página del cuaderno actual

Tenga cuidado al usar el modo "w": el contenido del archivo original desaparecerá por completo. Para añadir información preservando los datos anteriores, utilice el modo "a".

Lectura línea por línea

Cuando desee procesar el archivo línea por línea:

python
with open("samples.txt", "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if line:
print(line)

strip() elimina el carácter de fin de línea (\n) al final de cada línea. Si no se elimina, se mostrarán líneas en blanco al imprimir.

Lectura de archivos CSV

Los archivos CSV (valores separados por comas) son uno de los formatos estándar para los datos experimentales. Los datos exportados desde los dispositivos, los datos clínicos de TCGA y los datos descargados de NCBI se proporcionan en formato CSV.

text
sample_id,gene,expression,status
S001,EGFR,12.5,high
S002,TP53,3.2,low
S003,EGFR,18.7,high
S004,BRCA1,7.1,medium
S005,TP53,2.8,low

Se lee con el módulo csv de Python:

python
import csv
with open("expression_data.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
print(f"{row['sample_id']}: {row['gene']} = {row['expression']}")

csv.DictReader utiliza la primera fila (el encabezado) como clave para convertir cada fila en un diccionario. Esto permite acceder a los nombres de las columnas, lo que resulta muy práctico, como en row['gene'].

Filtrado condicional

"Quiero extraer solo el gen EGFR": basta con combinar bucles y sentencias condicionales:

python
import csv
egfr_samples = []
with open("expression_data.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
if row["gene"] == "EGFR":
egfr_samples.append(row)
print(f"Número de muestras EGFR: {len(egfr_samples)}")
for sample in egfr_samples:
print(f" {sample['sample_id']}: expression = {sample['expression']}")
assert len(egfr_samples) == 2

En este tema se aplican todos los conceptos aprendidos anteriormente: for, if, append y f-string. La programación funciona de esta manera: los conocimientos se acumulan y se combinan.

Escritura de archivos CSV

Guarda los resultados filtrados en un archivo nuevo:

python
import csv
high_expression = [
{"sample_id": "S001", "gene": "EGFR", "expression": "12.5"},
{"sample_id": "S003", "gene": "EGFR", "expression": "18.7"},
]
with open("egfr_high.csv", "w", encoding="utf-8", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["sample_id", "gene", "expression"])
writer.writeheader()
writer.writerows(high_expression)
print("egfr_high.csv guardado correctamente")

newline="" evita el problema de las líneas en blanco en Windows. También es recomendable incluirlo por costumbre en Mac/Linux.

Manejo de archivos TSV

TSV (valores separados por tabulaciones) es un archivo en el que los valores están separados por tabulaciones (\t). En bioinformática, se utiliza TSV con más frecuencia que CSV: datos de NCBI GEO, archivos BED, resultados de DEG, etc.

python
import csv
with open("deg_results.tsv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f, delimiter="\t")
for row in reader:
log2fc = float(row["log2FoldChange"])
pvalue = float(row["pvalue"])
if abs(log2fc) > 1.0 and pvalue < 0.05:
print(f"{row['gene']}: log2FC={log2fc:.2f}, p={pvalue:.4f}")

delimiter="\t" es todo lo que se necesita para que el código CSV se aplique directamente a TSV.

Inténtalo tú mismo (Ejemplo con guía)

Completa los espacios en blanco del siguiente ejemplo para escribir el código que filtre muestras de un archivo CSV según una condición específica.

Completar espaciospython
import
with open("samples.csv", "r", encoding="utf-8") as f:
reader = csv.Reader(f)
for row in reader:
od = float(row[""])
if od > 1.0:
print(f"{row['name']}: OD = {od}")

Errores comunes y soluciones

P: Se produce el error FileNotFoundError: No such file or directory

La ruta del archivo es incorrecta. Python interpreta las rutas relativas en función del directorio desde el que se ejecuta el script. Verifique con ls (terminal) si el archivo está en el directorio actual. En Google Colab, debe cargar el archivo desde la pestaña de archivos de la izquierda.

P: Al leer el CSV, los números aparecen como cadenas

csv.DictReader lee todos los valores como cadenas. Si necesita realizar operaciones numéricas, conviértalos a float(row["column"]) o int(row["column"]).

P: Los caracteres coreanos aparecen incorrectos

Es posible que haya omitido encoding="utf-8", o que el archivo esté guardado en otra codificación (por ejemplo, euc-kr). Al guardar desde Excel en coreano como CSV, a menudo se convierte a euc-kr. En ese caso, pruebe cambiando a encoding="euc-kr".

P: ¿Qué sucede si no se usa with en with open()?

Se puede abrir con f = open("file.txt"), pero si el programa se detiene por un error, el archivo no se cerrará. Al usar with, se cierra automáticamente incluso si ocurre un error. Es como apagar la fuente de alimentación del equipo después del experimento: with lo apaga automáticamente.

💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...