Saltar al contenido principal

ShoriFile

Archivo en memoria: nombre + bytes + content-type.

Attributes: name: Nombre del archivo. content: Contenido binario. content_type: MIME type (application/octet-stream por defecto).

Ejemplo General​

```python
archivo = ShoriFile("nota.txt", b"hola", "text/plain")
print(archivo.size, archivo.type) # 4 text/plain
archivo.save("/tmp") # escribe /tmp/nota.txt
```

Métodos​

def __init__(name: str, content: bytes, content_type: str) -> None​

Crea el archivo.

Parámetros:

  • name (str) — Nombre del archivo.
  • content (bytes) — Bytes del archivo (se copian).
  • content_type (str) — MIME type.

Ejemplo de uso:

```python
ShoriFile("a.pdf", pdf_bytes, "application/pdf")
```

def size() -> int​

Tamaño en bytes.

Retorna: int — len(content).

Ejemplo de uso:

```python
print(archivo.size)
```

def type() -> str​

Alias de content_type (como File.type en JS).

Retorna: str — MIME type.

Ejemplo de uso:

```python
print(archivo.type) # application/pdf
```

def read() -> bytes​

Devuelve el contenido binario.

Retorna: bytes — Bytes del archivo.

Ejemplo de uso:

```python
datos = archivo.read()
```

def save(destination: str | os.PathLike[str]) -> Path​

Guarda el archivo en disco.

Si destination es un directorio que YA existe, escribe <directorio>/<name>. En cualquier otro caso lo trata como ruta exacta del archivo. No crea carpetas: si el directorio padre no existe lanza FileNotFoundError.

Parámetros:

  • destination (str | os.PathLike[str]) — Directorio existente o ruta del archivo.

Retorna: Path — Path del archivo escrito.

Lanza:

  • FileNotFoundError — Si la carpeta padre del destino no existe.

Ejemplo de uso:

```python
import os
os.makedirs("descargas", exist_ok=True)
ruta = archivo.save("descargas") # descargas/<nombre>
ruta = archivo.save("descargas/otro.pdf") # ruta exacta
```

def renamed(name: str) -> ShoriFile​

Crea una copia con otro nombre (el original no cambia).

Parámetros:

  • name (str) — Nuevo nombre.

Retorna: ShoriFile — Nuevo ShoriFile con el mismo contenido y content-type.

Ejemplo de uso:

```python
copia = archivo.renamed("contrato-final.pdf")
```

def from_path(path: str | os.PathLike[str], name: str | None, content_type: str | None) -> ShoriFile​

Lee un archivo del disco.

Parámetros:

  • path (str | os.PathLike[str]) — Ruta del archivo.
  • name (str | None) — Nombre a usar (por defecto el del archivo en disco).
  • content_type (str | None) — MIME type (por defecto se deduce de la extensión).

Retorna: ShoriFile — ShoriFile con el contenido leído.

Ejemplo de uso:

```python
archivo = ShoriFile.from_path("contrato.pdf")
archivo = ShoriFile.from_path("tmp123.bin", name="contrato.pdf", content_type="application/pdf")
```

def coerce(value: Any) -> ShoriFile​

Convierte distintos tipos de entrada a ShoriFile.

Parámetros:

  • value (Any) — ShoriFile, bytes, ruta (str/Path) u objeto binario con read().

Retorna: ShoriFile — ShoriFile equivalente.

Lanza:

  • ValueError — Si el tipo no es soportado o el archivo se abrió en modo texto.

Ejemplo de uso:

```python
ShoriFile.coerce(b"datos")
ShoriFile.coerce("contrato.pdf")
with open("contrato.pdf", "rb") as f:
ShoriFile.coerce(f)
```