Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you define a local path in python

Good morning, I can indicate how to enter a path of internal hard disk in python, currently use the statement:

file = GETfile() or 'http://**********'

I would like to put a path to a local file, but it does not work, where am I wrong?

file = GETfile() or 'D:\xxx\xxxx\playlist\playlist.m3u'
like image 874
user3461181 Avatar asked May 07 '26 20:05

user3461181


2 Answers

\ is a escape character. You have three options.

1) use /. This, as a bonus works for linux as well:

 'D:/xxx/xxxx/playlist/playlist.m3u'

2) escape the backslash

 'D:\\xxx\\xxxx\\playlist\\playlist.m3u'

3) use raw strings:

r'D:\xxx\xxxx\playlist\playlist.m3u'
like image 144
Christian W. Avatar answered May 10 '26 10:05

Christian W.


A correct answer is already given, but some additional information when working with local drive paths on Windows operating system.

Personally I would go with the r'D:\dir\subdir\filename.ext' format, however the other two methods already mentioned are valid as well.

Furthermore, file operations on Windows are limited by Explorer to a 256 character limit. Longer path names will usually result in an OS error.

However there is a workaround, by pre fixing "\\?\" to a long path.

Example of a path which does not work:

D:\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\filename.ext

Same file path which does work:

\\?\D:\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\reallyreallyreallyreallyreallylonglonglonglongdir\filename.ext

so the following code I use to change filenames to include the "\\?\":

import os
import platform

def full_path_windows(filepath):
    if platform.system() == 'Windows':
        if filepath[1:3] == ':\\':
            return u'\\\\?\\' + os.path.normcase(filepath)
    return os.path.normcase(filepath)

I use this for every path to file (or directories), it will return the path with a prefix. The path does not need to exist; so you can use this also before you create a file or directory, to ensure you are not running into the Windows Explorer limitations.

HTH

like image 26
Edwin van Mierlo Avatar answered May 10 '26 12:05

Edwin van Mierlo



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!