使用 pathlib 创建符号链接
Create symlink with pathlib
我想测试 Python 代码是否可以正确使用符号链接。我如何创建符号链接(例如,等同于如何以 Python2/3 兼容的方式 os.symlink()
can be used) in a faked filesystem based on pathlib.Path
?
对于Python3.x,pathlib
package is in the standard library. For Python 2.7 you can use the backport pathlib2
。
这两个包都有一个 .symlink_to(target, target_is_directory=False)
方法,可以做你想做的事。
根据经验,Python2不喜欢在Windows环境下做符号链接,但是Python3支持NTFS符号链接。 Linux 很乐意在两者中创建符号链接。其他环境我就不说了。
这是一个用法示例
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!'
我想测试 Python 代码是否可以正确使用符号链接。我如何创建符号链接(例如,等同于如何以 Python2/3 兼容的方式 os.symlink()
can be used) in a faked filesystem based on pathlib.Path
?
对于Python3.x,pathlib
package is in the standard library. For Python 2.7 you can use the backport pathlib2
。
这两个包都有一个 .symlink_to(target, target_is_directory=False)
方法,可以做你想做的事。
根据经验,Python2不喜欢在Windows环境下做符号链接,但是Python3支持NTFS符号链接。 Linux 很乐意在两者中创建符号链接。其他环境我就不说了。
这是一个用法示例
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!'