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 conread().
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)
```