![](/img/trans.png)
[英]How to make a Python Glob module work Cross-Platform (os.path issues)?
[英]How to write cross-platform unit tests with os.path?
我想用os.path.basename
寫一個簡單的單元測試
def test(path):
return os.path.basename(os.path.normpath(title))
...
result = test('/path/foo')
assert result == 'foo'
result = test(r'c:\Users\Foo\Documents\foo')
assert result == 'foo'
在Linux上運行的第二個測試(Windows路徑)失敗。
我想第一次測試將在Windows上失敗。
實際上這是非常有意義的,因為存在不同的os.path
模塊
由於不同的操作系統具有不同的路徑名約定,因此標准庫中有該模塊的多個版本。
有沒有辦法導入特定版本的os.path
?
我已經嘗試將sys.platform
設置為win32
當然,我可以檢查當前平台並只運行兩個測試之一,但是我想知道是否有一種方法可以運行兩個測試。
您應該始終使用/
作為路徑分隔符。 Python將其轉換為適合您平台的正確分隔符。
\\
用於啟動轉義序列。 使用/
可以避免必須使用原始字符串來禁用\\
轉義序列(如您帖子中的第二個字符串一樣)。
在原始字符串中使用\\
可能還會導致os.path
方法的行為異常(僅在Windows平台上有效)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.