以下单元测试通过了所有linux/python和windows/python组合:
import os
import tempfile
from contextlib import contextmanager
def test_cd_to_tempdir():
initial_cwd = os.getcwd()
abspath_tmpdir = tempfile.mkdtemp()
try:
assert os.path.isabs(abspath_tmpdir)
os.chdir(abspath_tmpdir)
curdir = os.getcwd()
assert initial_cwd != curdir
assert curdir == abspath_tmpdir
finally:
os.chdir(initial_cwd) # must exit directory..
os.rmdir(abspath_tmpdir) # ..before it can be removed
在osx上出现故障(仅测试3.7.4),故障如下:
try:
assert os.path.isabs(abspath_tmpdir)
os.chdir(abspath_tmpdir)
curdir = os.getcwd()
assert initial_cwd != curdir
> assert curdir == abspath_tmpdir
E AssertionError: assert '/private/var...T/tmpoz7eo_yj' == '/var/folders/...T/tmpoz7eo_yj'
E - /private/var/folders/17/5mc7816d3mndxjqgplq6057w0000gn/T/tmpoz7eo_yj
E ? --------
E + /var/folders/17/5mc7816d3mndxjqgplq6057w0000gn/T/tmpoz7eo_yj
我不是mac电脑的人,所以我真的不知道/private/
前缀是如何工作的(一些谷歌搜索让我相信它是mac电脑与windows %APPDATA%
的等价物)
有没有一种方法可以跨平台编写此代码
(如果有人感兴趣,travis的跑步地点是https://travis-ci.org/datakortet/yamldirs/jobs/607842061)
/tmp
是指向macOS上/private/tmp
的符号链接(对于/var
也是如此)。参见跨站点问答;A Why is /tmp a symlink to /private/tmp?因此,要跨平台编写,您只需解析链接:
相关问题 更多 >
编程相关推荐