EMZETT.
Login

Create Files

In short: Programmatically creating a new, empty file in the file system — the basic operation before anything can even be written into a file.

In more detail: When creating a file, a program typically has to decide what should happen if a file with the same name already exists (overwrite, throw an error, or append) — this behaviour is usually controlled via a mode parameter. Missing write permissions in the target directory are a common source of error when creating files.

In Depth

Most languages have several modes for opening/creating a file, which precisely determine how an already-existing file of the same name is handled:

"w" (write)   - create the file, completely overwrite existing content
"x" (exclusive) - only create if it does NOT already exist -> error on collision
"a" (append)  - create if necessary, otherwise append to existing content

The "x" mode (exclusive creation) is especially important when an accidental overwrite would have fatal consequences — e.g. when creating a configuration file that shouldn’t accidentally overwrite an already-present, user-customised version.

try:
    with open("new_file.txt", "x") as f:
        f.write("First content")
except FileExistsError:
    print("File already exists - NOT overwritten")

Besides the naming conflict, there are other typical sources of error when creating a file:

  • Missing permissions in the target directory (the operating system doesn’t allow the program to create files there).
  • Non-existent target directory — unlike you might expect, most file system functions do NOT automatically create missing parent folders, that usually has to happen explicitly beforehand.
  • Invalid file names — reserved names or forbidden characters differ by operating system (Windows, for example, forbids :, *, ? in file names and reserves certain names like CON or AUX entirely, regardless of the file extension).

After creation, a file is initially empty — actually filling it with content happens in the next step via Write Files.

See also: Files, Write Files