Я думаю, що я не в змозі побачити загальну картину; але в основному я не уявляю, чому ви використовуєте os.path.join
замість звичайної конкатенації рядків?
Я в основному використовував VBScript, тому я не розумію суть цієї функції.
Я думаю, що я не в змозі побачити загальну картину; але в основному я не уявляю, чому ви використовуєте os.path.join
замість звичайної конкатенації рядків?
Я в основному використовував VBScript, тому я не розумію суть цієї функції.
Відповіді:
Напишіть маніпуляції з файловим шляхом один раз, і це працює на багатьох різних платформах безкоштовно. Розмежувальний символ абстрагується, що полегшує вашу роботу.
Вам більше не потрібно турбуватися, якщо цей шлях до каталогу має косу риску чи ні . os.path.join
додасть його, якщо буде потрібно.
Використання os.path.join
робить очевидним для інших людей, які читають ваш код, що ви працюєте з файловими шляхами. Люди можуть швидко просканувати код і суттєво виявити, що це шлях до файлу. Якщо ви вирішите побудувати його самостійно, ви, швидше за все, відвернете читача від виявлення реальних проблем із вашим кодом: "Хм, кілька рядків, заміни. Це шлях до файлу чи що? Гах! Чому він не використовував os.path.join
?" :)
os.path.join
, але якщо ви робите, робіть це з правильних причин. Навколо os.path.join є багато вантажів. "Дурна послідовність - це хобгоблін маленьких розумів", як вони кажуть.
Працюватиме в Windows з '\' та Unix (включаючи Mac OS X) з '/'.
для posixpath ось прямий код
In [22]: os.path.join??
Type: function
String Form:<function join at 0x107c28ed8>
File: /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py
Definition: os.path.join(a, *p)
Source:
def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded."""
path = a
for b in p:
if b.startswith('/'):
path = b
elif path == '' or path.endswith('/'):
path += b
else:
path += '/' + b
return path
не мають вікон, але те саме повинно бути там із "\"
/
робіт у Windows, з CPython ...
Це не залежить від ОС. Якщо ви жорстко кодуєте свої шляхи як C: \ Незалежно від того, вони будуть працювати лише в Windows. Якщо ви жорстко кодуєте їх зі стандартом Unix "/", вони працюватимуть лише на Unix. os.path.join виявляє операційну систему, в якій вона працює, та приєднує шляхи, використовуючи правильний символ.
If you hardcode them with the Unix standard "/" they will only work on Unix.
Це неправильно. "/" чудово працює у Windows І linux / unix / bsd / darwin.