Создать символическую ссылку с pathlib - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу проверить, правильно ли работает код Python с символическими ссылками.Как я могу создать символические ссылки (например, эквивалентно тому, как можно использовать os.symlink()) в поддельной файловой системе на основе pathlib.Path совместимым с Python2 / 3 способом?

1 Ответ

0 голосов
/ 07 февраля 2019

Для Python 3.x пакет pathlib находится в стандартной библиотеке.Для Python 2.7 вы можете использовать backport pathlib2.

Оба пакета имеют метод .symlink_to(target, target_is_directory=False), который должен делать то, что вы хотите.

Из опыта Python 2 не любит создавать символические ссылки в средах Windows, но Python 3 поддерживает символические ссылки NTFS.Линукс счастлив делать символические ссылки в любом из них.Другие среды, о которых я не могу говорить.

Вот пример использования

In [1]: from pathlib import Path                                                                                                                                                                              

In [2]: Path('textfile.txt').write_text('hello world!')                                                                                                                                                       
Out[2]: 12

In [3]: print(list(Path('.').rglob('*.*')))                                                                                                                                                                   
[PosixPath('textfile.txt')]

In [4]: Path('link-to-textfile.txt').symlink_to(Path('textfile.txt'))                                                                                                                                         

In [5]: print(list(Path('.').rglob('*.*')))                                                                                                                                                                  
[PosixPath('textfile.txt'), PosixPath('link-to-textfile.txt')]

In [6]: Path('link-to-textfile.txt').read_text()                                                                                                                                                             
Out[6]: 'hello world!'
...