Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows path in Python

People also ask

What is Windows path Python?

Path takes a path-like string and adjusts everything for the current OS, either Windows or Linux. For example, on Linux it would convert all backslashes to forward slashes, and on Windows it would do the reverse. Full article: Python 3 Quick Tip: The easy way to deal with file paths on Windows, Mac and Linux.

Where is my Python path Windows?

Steps on WindowsOpen Search and Type Edit the System Environment Variables. Then Click on the "Environment Variables" Button in the Down Corner. There you can see all of the paths associated to where python, pip and other binaries are located that you call on command line.

How do I put the file path in Python Windows?

On Windows, paths are written using backslashes (\) as the separator between folder names. OS X and Linux, however, use the forward slash (/) as their path separator. If you want your programs to work on all operating systems, you will have to write your Python scripts to handle both cases.

What is $PATH in Python?

What is PYTHONPATH? PYTHONPATH is an environment variable which the user can set to add additional directories that the user wants Python to add to the sys. path directory list. In short, we can say that it is an environment variable that you set before running the Python interpreter.


you can use always:

'C:/mydir'

this works both in linux and windows. Other posibility is

'C:\\mydir'

if you have problems with some names you can also try raw string literals:

r'C:\mydir'

however best practice is to use the os.path module functions that always select the correct configuration for your OS:

os.path.join(mydir, myfile)

From python 3.4 you can also use the pathlib module. This is equivelent to the above:

pathlib.Path(mydir, myfile)

or

pathlib.Path(mydir) / myfile

Use the os.path module.

os.path.join( "C:", "meshes", "as" )

Or use raw strings

r"C:\meshes\as"

I would also recommend no spaces in the path or file names. And you could use double backslashes in your strings.

"C:\\meshes\\as.jpg"

Yes, \ in Python string literals denotes the start of an escape sequence. In your path you have a valid two-character escape sequence \a, which is collapsed into one character that is ASCII Bell:

>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess

Other common escape sequences include \t (tab), \n (line feed), \r (carriage return):

>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']

As you can see, in all these examples the backslash and the next character in the literal were grouped together to form a single character in the final string. The full list of Python's escape sequences is here.

There are a variety of ways to deal with that:

  1. Python will not process escape sequences in string literals prefixed with r or R:

    >>> r'C:\meshes\as'
    'C:\\meshes\\as'
    >>> print(r'C:\meshes\as')
    C:\meshes\as
    
  2. Python on Windows should handle forward slashes, too.

  3. You could use os.path.join ...

    >>> import os
    >>> os.path.join('C:', os.sep, 'meshes', 'as')
    'C:\\meshes\\as'
    
  4. ... or the newer pathlib module

    >>> from pathlib import Path
    >>> Path('C:', '/', 'meshes', 'as')
    WindowsPath('C:/meshes/as')
    

Use Path:

from pathlib import Path
data_folder = Path("source_data/text_files/")
file_to_open = data_folder / "raw_data.txt"
print(file_to_open.read_text())

Path takes a path-like string and adjusts everything for the current OS, either Windows or Linux. For example, on Linux it would convert all backslashes to forward slashes, and on Windows it would do the reverse.

Full article: Python 3 Quick Tip: The easy way to deal with file paths on Windows, Mac and Linux


My experience:

  • I spent 6 months using os.path.join(...), then switched to normpath(...) then finally switched to Path(...). Having used all three, Path is the best of all worlds.

Advantages of Path over os.path.join(...):

  • Cleaner.
  • Less typing.
  • Easier to read the paths (i.e. more readable).
  • Can join two different paths using / (see above).
  • More modern.

Advantages of path over normpath(...):

  • Can join paths using / rather than having to fall back to os.path.join(...), with nested normpath calls to fix things up.
  • Cleaner.
  • Less typing.
  • Easier to read the paths (i.e. more readable).
  • Less chance of bugs when porting between Linux and Windows.
  • More modern.