COGNITION FOUNDRYLEARN. BUILD. UNDERSTAND.
PY-021 / Windows paths without confusion◷ 23 min read + practice

Quotes, backslashes and Python literals

Windows “Copy as path” often includes surrounding quotation marks. Python source also uses quotes and backslash escapes, but those are two different layers. Understanding the distinction prevents broken commands and mangled filenames.

By the end, you can: Explain the difference between a real path and a Python string literal, and remove only a matching outer quote pair.
Before this lesson: PY-020 · PY-013

Three different things that look similar

A filesystem path is a sequence of characters identifying a location. A shell command may surround a path with quotes so spaces remain in one argument. A Python source string literal uses quotes and backslash escapes to express the path value in code.

Deleting quotes from copied input can be useful when pasting into an application’s dedicated path field, but quotes are often *necessary* when composing a Windows command with spaces. Never remove them automatically in every context.

Why backslashes need attention in code

Inside an ordinary Python string literal, \n represents a newline and \t represents a tab. To write a literal backslash in ordinary source text, use \\.

A raw string such as r"C:\Temp\notes.txt" can make Windows paths more readable, but a raw string cannot end in a single backslash immediately before its closing quote. A pathlib object is usually preferable to manually assembling paths.

Remove *one matching pair* of outer quotes

If the first and last characters are both ", or both a single quote, a function can remove exactly those two characters. If only one side is quoted, it should preserve the input rather than guessing.

Do not use strip("\"'") when you specifically mean one pair: strip(chars) removes any number of matching characters at either end, including unbalanced sequences.

Escape for a Python source representation

Converting C:\Temp\report.txt into text containing doubled backslashes is a *source-code representation* operation. It does not change the existing filesystem path or make it more valid.

The built-in repr() can also show how Python represents a value. Its choice of quote characters may differ from the exact style you want to paste into another script.

Try it yourself.

Choose a starting example or write something completely different. You control the code; the Run button executes what is in the editor, not a hidden preset.

CF Python PlaygroundBrowser-based Python
Ready to load Python
Ordinary and raw strings

Two Python spellings can produce the same underlying path.

Syntax colours highlight Python code. Tab inserts four spaces; press Escape then Tab to leave the editor. Ctrl+Enter runs the current code.
OUTPUT / ERRORS
Press Run Python to execute the editable code.
NOW MAKE IT YOURS

Change the file name in both strings and compare again.

Need a hint?

The escaped form needs two source backslashes for each real backslash.

On first Run, a pinned Python runtime downloads from jsDelivr. Code executes locally in your browser's Web Worker, not on our server. It cannot inspect your normal PC files or Windows hardware. Avoid entering secrets. Heavy/infinite loops are stopped by a time limit.

Check your understanding.

Try answering each question before opening its reference answer. Explain the idea aloud or change an example to test it for yourself.

  1. Why might quotation marks need to remain around a Windows path in a command, even though Python can remove a matching pair in a string?

    View answer

    When a path is used as an argument to a shell command, surrounding quotes may be necessary to keep spaces inside one argument. Python can remove a matching quote pair from a string for a specific text operation, but doing so does not mean the path is safer for every use. Always consider the destination before changing the text.

  2. What is the difference between doubling backslashes in Python source and changing the actual Windows path?

    View answer

    An actual Windows path normally contains single backslash characters as separators. When writing that value inside an ordinary Python string literal, a backslash may need to be written twice so Python does not treat it as an escape sequence. Doubling for source text changes how the value is spelled in code, not the filesystem location it refers to.

Where this leads.

Next we will accept text from a user and validate it before transforming it.