12.2. Deleting Files or Directories: The `Delete` Factory
Prev | Chapter 12. Platform-Independent File System Manipulation | Next

## 12.2. Deleting Files or Directories: The `Delete` Factory

If you need to delete a file, then the `Delete` factory can be used in much the same way as the `Copy` factory. For example, if we want to make sure that the temporary file in our last example doesn't exist before we copy to it, we could add `Delete` to the beginning of the command list:

    Command(
        "file.out",
        "file.in",
        action=[
            Delete("tempfile"),
            Copy("tempfile", "$SOURCE"),
            "modify tempfile",
            Copy("$TARGET", "tempfile"),
        ],
    )

Which then executes as follows:

    % scons -Q
    Delete("tempfile")
    Copy("tempfile", "file.in")
    modify tempfile
    Copy("file.out", "tempfile")

Of course, like all of these Action factories, the `Delete` factory also expands `$TARGET` and `$SOURCE` variables appropriately. For example:

    Command(
        "file.out",
        "file.in",
        action=[
            Delete("$TARGET"),
            Copy("$TARGET", "$SOURCE"),
        ],
    )

Executes as:

    % scons -Q
    Delete("file.out")
    Copy("file.out", "file.in")

Note, however, that you typically don't need to call the `Delete` factory explicitly in this way; by default, SCons deletes its target(s) for you before executing any action.

One word of caution about using the `Delete` factory: it has the same variable expansions available as any other factory, including the `$SOURCE` variable. Specifying `Delete("$SOURCE")` is not something you usually want to do!

Prev | Up | Next
Chapter 12. Platform-Independent File System Manipulation | Home | 12.3. Moving (Renaming) Files or Directories: The `Move` Factory