# Source.file
URL: https://lsd.tools/docs/api-source-file
Updated: 2026-07-17

## Parameters

| name | type | default | description |
|---|---|---|---|
| `*paths` | `str` | — | explicit file paths to read |
| `folder` | `str` | `""` | a directory to scan instead of listing `paths` |
| `patterns` | `str` | `""` | glob pattern(s) matched inside `folder`, e.g. `"*.parquet"` |
| `combine` | `str` | `"concat"` | how multiple matched files fold into one `Table` |

## Example

```python
from lsdtools import Source

Source.file("a.csv", "b.csv")                    # two explicit files
```

Scan a folder with a glob instead of listing files:

```python
Source.file(folder="data", patterns="*.parquet")
```

## Notes

Files are read by extension — `.csv` via CSV, `.parquet` / `.pq` via Parquet. `combine`
controls how several matched files fold together; the default `"concat"` stacks their rows
into one `Table`. This constructor returns a plain value `Source` (not bound to a step), so
you can call `.read()` on it directly.

## See also

**API:** [sql](/docs/api-source-sql) · [of](/docs/api-source-of) · [read](/docs/api-source-read) · [paths](/docs/api-source-paths)

**Guides:** [Load steps](/docs/tools-load) · [File loader](/docs/ex-file-loader)
