精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

求求你,別用 Os.Path 了

開發 開發工具
學習了一番 pathlib 之后,發現這是一個非常高效便捷的工具,用它來處理文件系統路徑相關的操作最合適不過,集成了很多快捷的功能,提升你的編程效率,那是妥妥的。

 [[398653]]

前段時間,在使用新版本的 Django 時,我發現了 settings.py 的第一行代碼從

  1. import os 
  2. BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 

變成了

  1. from pathlib import Path 
  2. BASE_DIR = Path(__file__).resolve().parent.parent 

于是我就好奇,os 和 pathlib 同樣是標準庫,為什么 pathlib 得到了 Django 的青睞?學習了一番 pathlib 之后,發現這是一個非常高效便捷的工具,用它來處理文件系統路徑相關的操作最合適不過,集成了很多快捷的功能,提升你的編程效率,那是妥妥的。

接下來讓一起看一下,為什么 pathlib 更值得我們使用。

pathlib vs os

話不多說,先看下使用對比:比如說

打印當前的路徑:

使用 os:

  1. In [13]: import os 
  2.  
  3. In [14]: os.getcwd() 
  4. Out[14]: '/Users/aaron' 

使用 pathlib:

  1. In [15]: from pathlib import Path 
  2.  
  3. In [16]: Path.cwd() 
  4. Out[16]: PosixPath('/Users/aaron'
  5. In [17]: print(Path.cwd()) 
  6. /Users/aaron 

使用 print 打印的結果是一樣的,但 os.getcwd() 返回的是字符串,而 Path.cwd() 返回的是 PosixPath 類,你還可以對此路徑進行后續的操作,會很方便。

判斷路徑是否存在:

使用 os:

  1. In [18]: os.path.exists("/Users/aaron/tmp"
  2.  
  3. Out[18]: True 

使用 pathlib:

  1. In [21]: tmp = Path("/Users/aaron/tmp"
  2.  
  3. In [22]: tmp.exists() 
  4. Out[22]: True 

可以看出 pathlib 更易讀,更面向對象。

顯示文件夾的內容

  1. In [38]: os.listdir("/Users/aaron/tmp"
  2. Out[38]: ['.DS_Store''.hypothesis''b.txt''a.txt''c.py''.ipynb_checkpoints'
  3.  
  4. In [39]: tmp.iterdir() 
  5. Out[39]: <generator object Path.iterdir at 0x7fa3f20d95f0> 
  6.  
  7. In [40]: list(tmp.iterdir()) 
  8. Out[40]: 
  9. [PosixPath('/Users/aaron/tmp/.DS_Store'), 
  10.  PosixPath('/Users/aaron/tmp/.hypothesis'), 
  11.  PosixPath('/Users/aaron/tmp/b.txt'), 
  12.  PosixPath('/Users/aaron/tmp/a.txt'), 
  13.  PosixPath('/Users/aaron/tmp/c.py'), 
  14.  PosixPath('/Users/aaron/tmp/.ipynb_checkpoints')] 

可以看出 Path().iterdir 返回的是一個生成器,這在目錄內文件特別多的時候可以大大節省內存,提升效率。

通配符支持

os 不支持含有通配符的路徑,但 pathlib 可以:

  1. In [45]: list(Path("/Users/aaron/tmp").glob("*.txt")) 
  2. Out[45]: [PosixPath('/Users/aaron/tmp/b.txt'), PosixPath('/Users/aaron/tmp/a.txt')] 

便捷的讀寫文件操作

這是 pathlib 特有的:

  1. f = Path('test_dir/test.txt')) 
  2. f.write_text('This is a sentence.'
  3. f.read_text() 

也可以使用 with 語句:

  1. >>> p = Path('setup.py'
  2. >>> with p.open() as f: f.readline() 
  3. ... 
  4. '#!/usr/bin/env python3\n' 

獲取文件的元數據

  1. In [56]: p = Path("/Users/aaron/tmp/c.py"
  2.  
  3. In [57]: p.stat() 
  4. Out[57]: os.stat_result(st_mode=33188, st_ino=35768389, st_dev=16777221, st_nlink=1, st_uid=501, st_gid=20, st_size=20, st_atime=1620633580, st_mtime=1620633578, st_ctime=1620633578) 
  5.  
  6. In [58]: p.parts 
  7. Out[58]: ('/''Users''aaron''tmp''c.py'
  8.  
  9. In [59]: p.parent 
  10. Out[59]: PosixPath('/Users/aaron/tmp'
  11.  
  12. In [60]: p.resolve() 
  13. Out[60]: PosixPath('/Users/aaron/tmp/c.py'
  14.  
  15. In [61]: p.exists() 
  16. Out[61]: True 
  17.  
  18. In [62]: p.is_dir() 
  19. Out[62]: False 
  20.  
  21. In [63]: p.is_file() 
  22. Out[63]: True 
  23.  
  24. In [64]: p.owner() 
  25. Out[64]: 'aaron' 
  26.  
  27. In [65]: p.group() 
  28. Out[65]: 'staff' 
  29.  
  30. In [66]: p.name 
  31. Out[66]: 'c.py' 
  32.  
  33. In [67]: p.suffix 
  34. Out[67]: '.py' 
  35.  
  36. In [68]: p.suffixes 
  37. Out[68]: ['.py'
  38.  
  39. In [69]: p.stem 
  40. Out[69]: 'c' 

路徑的連接 join

相比 os.path.join,使用一個 / 是不是更為直觀和便捷?

  1. >>> p = PurePosixPath('foo'
  2. >>> p / 'bar' 
  3. PurePosixPath('foo/bar'
  4. >>> p / PurePosixPath('bar'
  5. PurePosixPath('foo/bar'
  6. >>> 'bar' / p 
  7. PurePosixPath('bar/foo'

當然,也可以使用 joinpath 方法

  1. >>> PurePosixPath('/etc').joinpath('passwd'
  2. PurePosixPath('/etc/passwd'
  3. >>> PurePosixPath('/etc').joinpath(PurePosixPath('passwd')) 
  4. PurePosixPath('/etc/passwd'
  5. >>> PurePosixPath('/etc').joinpath('init.d''apache2'
  6. PurePosixPath('/etc/init.d/apache2'
  7. >>> PureWindowsPath('c:').joinpath('/Program Files'
  8. PureWindowsPath('c:/Program Files'

路徑匹配

  1. >>> PurePath('a/b.py').match('*.py'
  2. True 
  3. >>> PurePath('/a/b/c.py').match('b/*.py'
  4. True 
  5. >>> PurePath('/a/b/c.py').match('a/*.py'
  6. False 

pathlib 出現的背景和要解決的問題

pathlib 目的是提供一個簡單的類層次結構來處理文件系統的路徑,同時提供路徑相關的常見操作。那為什么不使用 os 模塊或者 os.path 來實現呢?

許多人更喜歡使用 datetime 模塊提供的高級對象來處理日期和時間,而不是使用數字時間戳和 time 模塊 API。同樣的原因,假如使用專用類表示文件系統路徑,也會更受歡迎。

換句話說,os.path 是面向過程風格的,而 pathlib 是面向對象風格的。Python 也在一直在慢慢地從復制 C 語言的 API 轉變為圍繞各種常見功能提供更好,更有用的抽象。

其他方面,使用專用的類處理特定的需求也是很有必要的,例如 Windows 路徑不區分大小寫。

在這樣的背景下,pathlib 在 Python 3.4 版本加入標準庫。

pathlib 的優勢和劣勢分別是什么

pathlib 的優勢在于考慮了 Windows 路徑的特殊性,同時提供了帶 I/O 操作的和不帶 I/O 操作的類,使用場景更加明確,API 調用更加易懂。

先看下 pathlib 對類的劃分:

圖中的箭頭表示繼承自,比如 Path 繼承自 PurePath,PurePath 表示純路徑類,只提供路徑常見的操作,但不包括實際 I/O 操作,相對安全;Path 包含 PurePath 的全部功能,包括 I/O 操作。

PurePath 有兩個子類,一個是 PureWindowsPath,表示 Windows 下的路徑,不區分大小寫,另一個是 PurePosixPath,表示其他系統的路徑。有了 PureWindowsPath,你可以這樣對路徑進行比較:

  1. from pathlib import PureWindowsPath 
  2. >>> PureWindowsPath('a') == PureWindowsPath('A'
  3. True 

PurePath 可以在任何操作系統上實例化,也就是說與平臺無關,你可以在 unix 系統上使用 PureWindowsPath,也可以在 Windows 系統上使用 PurePosixPath,他們還可以相互比較。

  1. >>> from pathlib import PurePosixPath, PureWindowsPath, PosixPath   
  2. >>> PurePosixPath('a') == PurePosixPath('b'
  3. False 
  4. >>> PurePosixPath('a') < PurePosixPath('b'
  5. True 
  6. >>> PurePosixPath('a') == PosixPath('a'
  7. True 
  8. >>> PurePosixPath('a') == PureWindowsPath('a'
  9. False 

可以看出,同一個類可以相互比較,不同的類比較的結果是 False。

相反,包含 I/O 操作的類 PosixPath 及 WindowsPath 只能在對應的平臺實例化:

  1. In [8]: from pathlib import PosixPath,WindowsPath 
  2.  
  3. In [9]: PosixPath('a'
  4. Out[9]: PosixPath('a'
  5.  
  6. In [10]: WindowsPath('a'
  7. --------------------------------------------------------------------------- 
  8. NotImplementedError                       Traceback (most recent call last
  9. <ipython-input-10-cc7a0d86d4ed> in <module> 
  10. ----> 1 WindowsPath('a') 
  11.  
  12. /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/pathlib.py in __new__(cls, *args, **kwargs) 
  13.    1038         self = cls._from_parts(args, init=False
  14.    1039         if not self._flavour.is_supported: 
  15. -> 1040             raise NotImplementedError("cannot instantiate %r on your system" 
  16.    1041                                       % (cls.__name__,)) 
  17.    1042         self._init() 
  18.  
  19. NotImplementedError: cannot instantiate 'WindowsPath' on your system 
  20.  
  21. In [11]: 

要說劣勢,如果有的話,那就是在選擇類時會比較困惑,到底用哪一個呢?其實如果你不太確定的話,用 Path 就可以了,這也是它的名稱最短的原因,因為更加常用,短點的名稱編寫的更快。

適用的場景

如果要處理文件系統相關的操作,選 pathlib 就對了。

一些關鍵點

獲取家目錄:

  1. In [70]: from pathlib import Path 
  2.  
  3. In [71]: Path.home() 
  4. Out[71]: PosixPath('/Users/aaron'

父目錄的層級獲取:

  1. >>> p = PureWindowsPath('c:/foo/bar/setup.py'
  2. >>> p.parents[0] 
  3. PureWindowsPath('c:/foo/bar'
  4. >>> p.parents[1] 
  5. PureWindowsPath('c:/foo'
  6. >>> p.parents[2] 
  7. PureWindowsPath('c:/'

獲取多個文件后綴:

  1. >>> PurePosixPath('my/library.tar.gar').suffixes 
  2. ['.tar''.gar'
  3. >>> PurePosixPath('my/library.tar.gz').suffixes 
  4. ['.tar''.gz'
  5. >>> PurePosixPath('my/library').suffixes 
  6. [] 

Windows 風格轉 Posix:

  1. >>> p = PureWindowsPath('c:\\windows'
  2. >>> str(p) 
  3. 'c:\\windows' 
  4. >>> p.as_posix() 
  5. 'c:/windows' 

獲取文件的 uri:

  1. >>> p = PurePosixPath('/etc/passwd'
  2. >>> p.as_uri() 
  3. 'file:///etc/passwd' 
  4. >>> p = PureWindowsPath('c:/Windows'
  5. >>> p.as_uri() 
  6. 'file:///c:/Windows' 

判斷是否絕對路徑:

  1. >>> PurePosixPath('/a/b').is_absolute() 
  2. True 
  3. >>> PurePosixPath('a/b').is_absolute() 
  4. False 
  5.  
  6. >>> PureWindowsPath('c:/a/b').is_absolute() 
  7. True 
  8. >>> PureWindowsPath('/a/b').is_absolute() 
  9. False 
  10. >>> PureWindowsPath('c:').is_absolute() 
  11. False 
  12. >>> PureWindowsPath('//some/share').is_absolute() 
  13. True 

文件名若有變化:

  1. >>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz'
  2. >>> p.with_name('setup.py'
  3. PureWindowsPath('c:/Downloads/setup.py'

是不是非常方便?

技術的底層原理和關鍵實現

pathlib 并不是基于 str 的實現,而是基于 object 設計的,這樣就嚴格地區分了 Path 對象和字符串對象,同時也用到了一點 os 的功能,比如 os.name,os.getcwd 等,這一點大家可以看 pathlib 的源碼了解更多。

最后的話

本文分享了 pathlib 的用法,后面要處理路徑相關的操作時,你應該第一時間想到 pathlib,不會用沒有關系,搜索引擎所搜索 pathlib 就可以看到具體的使用方法。

雖然 pathlib 比 os 庫更高級,更方便并且提供了很多便捷的功能,但是我們仍然需要知道如何使用 os 庫,因為 os 庫是 Python 中功能最強大且最基本的庫之一,但是,在需要一些文件系統操作時,強烈建議使用 pathlib。

本文轉載自微信公眾號「Python七號」,可以通過以下二維碼關注。轉載本文請聯系Python七號公眾號。

 

責任編輯:武曉燕 來源: Python七號
相關推薦

2020-12-11 09:24:19

Elasticsear存儲數據

2020-12-15 08:06:45

waitnotifyCondition

2023-11-13 22:47:58

PythonPathlib

2021-09-24 09:30:05

os.path模塊Python

2020-06-15 08:12:51

try catch代碼處理器

2022-10-27 21:34:28

數據庫機器學習架構

2020-09-22 09:05:45

MySQLUTF-8utf8mb4

2025-02-10 08:05:03

2020-11-09 08:22:29

程序員 IT科技

2010-03-25 12:50:45

Python代碼

2020-10-12 10:45:44

nullava程序員

2020-05-09 10:18:31

Java開源工具

2024-04-29 08:32:21

os.path模塊Python內置函數

2025-05-06 09:10:00

Python路徑處理os.path

2025-08-04 01:55:00

2023-12-08 14:37:51

接口jar包開發

2020-04-08 17:53:40

TypeScriptJavaScript代碼

2024-03-14 08:15:18

COUNT(*)數據庫LIMIT 1?

2021-09-30 06:13:36

打印日志error

2020-12-04 10:05:00

Pythonprint代碼
點贊
收藏

51CTO技術棧公眾號

美女网站色免费| 久久国产一区| 黄色一级片中国| 成功精品影院| 狠狠躁夜夜躁人人爽天天天天97| 久久久久久亚洲精品不卡4k岛国| 天天操天天操天天操天天| 黑丝美女一区二区| 日韩一区二区三区在线| 日韩精品视频在线观看视频| 欧美精品少妇| 蜜臀av性久久久久蜜臀aⅴ流畅 | 热久久免费国产视频| 精品人妻一区二区三区四区| 精品视频一二| 日韩欧美极品在线观看| 欧美日韩在线免费观看视频| 天堂在线视频免费观看| 美女任你摸久久| 国自在线精品视频| 91久久久久久久久久久久久久| 国产劲爆久久| 欧美丰满嫩嫩电影| 日批视频在线免费看| 国产成人l区| 久久精品亚洲国产奇米99| 91在线精品视频| 波多野结衣电车痴汉| 国自产拍偷拍福利精品免费一| 亚洲人成免费电影| 亚洲美女在线播放| 图片一区二区| 在线亚洲人成电影网站色www| 男人添女人下部视频免费| jizz日韩| 久久亚洲精品小早川怜子| 999在线观看免费大全电视剧| 中国老头性行为xxxx| 亚洲精品婷婷| 欧美精品久久久久a| 亚洲色图日韩精品| 久久av综合| 亚洲高清一二三区| 国产免费a级片| 91精品国产色综合久久不卡粉嫩| 91成人免费网站| 国产在线播放观看| 国内小视频在线看| 一区二区三区视频在线看| 在线综合视频网站| 一区二区高清不卡| 国产精品福利av| 夜夜爽www精品| 久久久久久在线观看| jizz内谢中国亚洲jizz| 一区二区三区久久| 91免费视频黄| 快射av在线播放一区| 国产精品欧美一级免费| 水蜜桃一区二区三区| 黄色的视频在线免费观看| 91免费视频大全| 精品国产乱码久久久久久蜜柚 | 亚洲每日在线| 久久免费视频观看| 精品午夜福利在线观看| 黄色亚洲在线| 97久久精品人人澡人人爽缅北| 动漫精品一区一码二码三码四码| 狠狠爱成人网| 高清一区二区三区四区五区| 日韩av免费一区| 农村黄色一级片| 欧美日韩亚洲国产精品| 欧美激情精品久久久久久免费印度| 一起操在线播放| 最新国产精品| 国模视频一区二区三区| 国产手机在线视频| 久久精品1区| 国产精品va在线播放| 亚洲一区二区天堂| 国产精品中文欧美| 精品国产免费一区二区三区 | 久久精品国产亚洲高清剧情介绍| 成人久久18免费网站图片| 999免费视频| 成人黄色在线网站| 欧美日韩喷水| 日本三级在线视频| 亚洲一二三四区不卡| 91专区在线观看| 99re66热这里只有精品4| 欧美日韩精品一区视频| 91精产国品一二三| 色爱综合av| 日韩中文第一页| 欧美色图一区二区| 视频一区视频二区在线观看| 国产剧情久久久久久| 亚洲国产精品国自产拍久久| 久久综合久久99| 中文字幕日韩一区二区三区不卡| heyzo高清中文字幕在线| 欧美性猛交视频| 午夜大片在线观看| 亚洲va久久| 久久久精品美女| 国产精品视频免费播放| 国精产品一区一区三区mba桃花| 国产一区二区自拍| 欧美三级电影一区二区三区| 激情成人中文字幕| 亚洲欧美日本一区二区| 在线亚洲a色| 欧美日韩成人网| 国产精华7777777| 成人小视频在线| 亚洲蜜桃av| 五月天av在线| 欧美成人一区二区三区在线观看 | 最近2019年好看中文字幕视频 | 第一会所sis001亚洲| 欧美激情乱人伦一区| 国产又粗又猛又爽又| 成人黄色a**站在线观看| 影音欧美亚洲| 日韩成人亚洲| 日韩av在线免费| 九九热精彩视频| 久久国产精品99久久人人澡| 欧美色欧美亚洲另类七区| 欧美亚洲系列| 宅男在线国产精品| 亚洲ⅴ国产v天堂a无码二区| 国产精品社区| 国产精品制服诱惑| а√天堂在线官网| 91麻豆精品久久久久蜜臀 | 国产高清在线免费| 最好看的中文字幕久久| 色噜噜狠狠一区二区| 精品理论电影| 日韩美女在线观看一区| 色视频在线观看福利| 激情懂色av一区av二区av| 日本一区二区免费视频| 欧美在线影院| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 久久综合网导航| 欧美在线三级电影| 成人小视频免费看| 日本午夜一本久久久综合| 蜜桃视频成人| 成人国产二区| 亚洲欧美在线x视频| 欧美黑人一区二区| 久久九九影视网| 日韩手机在线观看视频| 国产精品手机在线播放| 日本高清视频一区| 伦理片一区二区三区| 欧洲视频一区二区| 亚洲色图第四色| 麻豆精品一区二区三区| 中文字幕av日韩精品| 超碰国产精品一区二页| 久久亚洲影音av资源网| 精品人妻无码一区二区| 亚洲一区二区三区不卡国产欧美 | 97aⅴ精品视频一二三区| 国产一区二区在线视频播放| 中文字幕伦av一区二区邻居| 国产成人免费91av在线| 日本最新在线视频| 日韩欧美国产午夜精品| 国产一级特黄aaa大片| 91在线播放网址| 亚洲人成无码www久久久| 成人精品久久| 18成人在线| 国产在线天堂www网在线观看| 亚洲毛片在线观看.| 最新国产中文字幕| 一区二区在线看| 亚洲观看黄色网| 男人操女人的视频在线观看欧美| 影音先锋欧美资源| 在线日韩成人| 日韩av电影院| 含羞草www国产在线视频| 亚洲第一中文字幕| 人妻中文字幕一区二区三区| 亚洲精品视频在线| 国产精品无码一区二区三区免费 | 国产精品后入内射日本在线观看| 国产日韩欧美一区二区三区| 成人网址在线观看| 免费毛片b在线观看| 亚洲日韩第一页| 国产日本精品视频| 色一情一伦一子一伦一区| 亚洲综合久久av一区二区三区| 国产91精品露脸国语对白| 国产精品wwwww| 欧美精品aa| 日本一区二区在线视频| 欧美a在线观看| 欧美在线性视频| 调教一区二区| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲成av人片观看| 国产白丝一区二区三区| 99国产一区二区三精品乱码| 99日在线视频| 日韩国产欧美在线观看| a级黄色小视频| 97精品一区二区| 欧美凹凸一区二区三区视频| 超碰成人免费| 成人免费视频97| 欧美va在线观看| 18一19gay欧美视频网站| 福利在线视频网站| 中文字幕亚洲精品| 色av男人的天堂免费在线 | 亚洲 欧美 自拍偷拍| 日韩色在线观看| 在线观看国产小视频| 色婷婷亚洲一区二区三区| 国产一级片网址| 1区2区3区精品视频| 色屁屁草草影院ccyy.com| 97久久超碰国产精品电影| 精品无码av一区二区三区| 狠狠色狠狠色合久久伊人| 污污动漫在线观看| 日本成人在线一区| 你真棒插曲来救救我在线观看| 欧美freesex交免费视频| 一本久久a久久精品vr综合| 欧美系列电影免费观看| 欧美一区二区福利| 一区二区三区视频免费观看| 精品在线一区| 日韩mv欧美mv国产网站| 国产精品一区二区三区观看| 北条麻妃一区二区三区在线| 成人在线免费网站| 一区二区三区亚洲变态调教大结局 | 99影视tv| 免费一区二区三区在线视频| 亚洲自拍偷拍第一页| 国产精品亚洲综合在线观看| 国产日韩欧美自拍| 久久69成人| 成人福利在线观看| 久久99精品久久久野外观看| 91在线免费看片| 日韩成人18| 成人女人免费毛片| 久久久免费毛片| 久草一区二区| 综合综合综合综合综合网| 欧美精品123| 激情婷婷综合| 亚洲一区三区视频在线观看| 亚洲h色精品| 高清无码一区二区在线观看吞精| 极品av少妇一区二区| 秋霞无码一区二区| 久久在线精品| jizz大全欧美jizzcom| 国产高清精品久久久久| 欧美双性人妖o0| 久久精品这里都是精品| 影音先锋男人资源在线观看| 亚洲精品国产第一综合99久久 | 国产精品日韩av| 日韩成人在线电影| 91日本视频在线| 精品欠久久久中文字幕加勒比| 免费日韩av电影| 97色伦图片97综合影院| 欧美激情亚洲天堂| 久久久久国产精品一区三寸| 国产三级精品三级在线| 波多野结衣精品在线| 女女互磨互喷水高潮les呻吟 | 精品美女一区二区| 青青青草原在线| 久久手机免费视频| 精精国产xxxx视频在线野外| 国产精品久久久久久影视| 日韩在线网址| 欧美一进一出视频| 欧美日韩网站| www黄色av| 国产精品一二三区在线| 亚洲熟妇无码av| 亚洲三级在线播放| 久久久久久久久久久影院 | 韩国中文字幕hd久久精品| 亚洲欧美在线一区二区| 1769免费视频在线观看| 日韩av电影院| 国产精东传媒成人av电影| 亚洲欧洲精品在线观看| 亚洲毛片av| 日本中文字幕在线不卡| 久久久久久久av麻豆果冻| 免费人成在线观看| 欧美性色黄大片| 四虎在线视频免费观看| 国产亚洲欧洲黄色| 成年女人在线看片| 91夜夜揉人人捏人人添红杏| 国产va免费精品观看精品视频 | 黄色日韩在线| 中文字幕 欧美日韩| 久久精品视频一区| 日韩精品视频免费播放| 欧美一区午夜视频在线观看| 国内在线免费高清视频| 91高清视频在线免费观看| 精品国产乱码久久久久久樱花| 欧美日韩亚洲一区二区三区在线观看| 国产精品v欧美精品v日本精品动漫| 婷婷免费在线观看| 国产女主播视频一区二区| 久久黄色精品视频| 亚洲精品国产福利| 欧美videossex| 亚洲一区二区三区视频播放| 999国产精品999久久久久久| 青青在线视频免费| 91网上在线视频| 日韩福利片在线观看| 欧美成人精品1314www| 91亚洲天堂| 成人网在线免费观看| 日韩在线视屏| 向日葵污视频在线观看| 久久精品网站免费观看| 69国产精品视频免费观看| 日韩hd视频在线观看| av福利导福航大全在线| 国产精品久久久久av福利动漫| 欧美一区视频| 熟妇女人妻丰满少妇中文字幕| 亚洲欧美日韩中文字幕一区二区三区 | 久久久欧美精品| 99久久免费精品国产72精品九九 | 久久丫精品国产亚洲av不卡| 性久久久久久久久| 日韩一级片免费观看| 97精品久久久中文字幕免费| 美女av一区| 日韩欧美国产免费| 久久精品夜色噜噜亚洲aⅴ| 免费a级毛片在线播放| 亚洲高清久久久久久| 亚洲欧美成人影院| 99re在线国产| 欧美精品国产一区| 国产精品亚洲一区二区无码| 亚洲一区二区在线视频| 日本xxxxwww| 欧洲成人免费aa| 国产欧美日韩影院| 色91精品久久久久久久久| 亚洲精品美国一| 国产在线不卡av| 国产精品xxxav免费视频| 91九色国产ts另类人妖| 国产精品资源在线| 日韩aaaaaa| 亚洲区一区二区| 日韩欧美激情| 日韩久久久久久久久久久久| a亚洲天堂av| 无码无套少妇毛多18pxxxx| 色999日韩欧美国产| 青草伊人久久| 欧美精品自拍视频| 国产午夜精品一区二区| 91精品国产乱码久久| 欧美黑人视频一区| 国产区精品区| 九色91porny| 欧美性xxxx极品hd满灌| 777电影在线观看| 97se国产在线视频| 久久不射2019中文字幕| 永久免费看片直接| 亚洲电影在线观看| 欧美一区=区三区| 欧美在线视频一二三| 午夜精品久久久久久久爽 | 亚洲成人久久精品|