借鉴于 pathlib 官方文档 用于自己学习和记录

使用 pathlib 模块基本可以代替 os.path 来处理路径。它采用了完全面向对象的编程方式。

其包含六个类,图片如下:

但是大体有两类:

pure paths 路径计算操作没有IO功能

concrete paths 路径计算操作和IO功能

从上图可以看出:PurePath 类是所有类的基类

基础使用

列出子目录

>>> p = Path('.')

>>> [x for x in p.iterdir() if x.is_dir()]

[PosixPath('.hg'), PosixPath('docs'), PosixPath('dist'),

PosixPath('__pycache__'), PosixPath('build')]

###### 列出指定类型的文件

list(p.glob('**/*.py'))

###### 路径拼接

在目录树中移动

使用`/`来拼接路径

```python

>>> p = Path('/etc')

>>> q = p / 'init.d' / 'reboot'

>>> q

WindowsPath('/etc/init.d/reboot')

>>> q.resolve()

WindowsPath('C:/etc/init.d/reboot')

>>> print(q)

\etc\init.d\reboot

>>> print(q.resolve())

C:\etc\init.d\reboot

>>>

```

###### 查询路径的属性

```python

>>> q.exists() # Unix 里面这个会返回True

False

>>> q.is_dir()

False

>>>

```

###### 打开一个文件

```python

>>> with q.open() as f: f.readline()

...

FileNotFoundError: [Errno 2] No such file or directory # 如果不存在则报错

```

#### Pure paths 纯路径

纯路径对象提供了不实际访问文件系统的路径处理操作。有三种方式来访问这些类。

###### class pathlib.**PurePath(\*pathsegments)**

>>> PurePath('setup.py')

PurePosixPath('setup.py') # Running on a Unix machine

PureWindowsPath('setup.py') # Running on a Windows machine

# 也可以用以下方式添加路径

>>> PurePath('foo', 'some/path', 'bar')

PurePosixPath('foo/some/path/bar') # Running on a Unix machine

PureWindowsPath('foo/some/path/bar') # Running on a Windows machine

>>> PurePath(Path('foo'), Path('bar'))

PurePosixPath('foo/bar') # Running on a Unix machine

PureWindowsPath('foo/bar') # Running on a Windows machine

参数为空时,返回当前路径

>>> PurePath()

PurePosixPath('.') # Running on a Unix machine

PureWindowsPath('.') # Running on a Windows machine

当同时指定多个绝对路径,则使用最后一个

>>> PurePath('/etc', '/usr', 'lib64')

PurePosixPath('/usr/lib64')

>>> PureWindowsPath('c:/Windows', 'd:bar')

PureWindowsPath('d:bar')

在 Windows 路径中,改变本地根目录并不会丢弃之前盘符的设置

>>> PureWindowsPath('c:/Windows', '/Program Files')

PureWindowsPath('c:/Program Files')

双斜线和单独的点都会被消除,但是双点 (‘..’) 不会,以防改变符号链接的含义。

>>> PurePath('foo//bar')

PurePosixPath('foo/bar')

>>> PurePath('foo/./bar')

PurePosixPath('foo/bar')

>>> PurePath('foo/../bar')

PurePosixPath('foo/../bar')

###### class pathlib.**PurePosixPath(\*pathsegments)**

>>> PurePosixPath('/etc')

PurePosixPath('/etc')

其他操作与 PurePath 相同

class pathlib.PureWindowsPath(*pathsegments)

>>> PureWindowsPath('c:/Program Files/')

PureWindowsPath('c:/Program Files')

其他操作与 PurePath 相同

** 无论你正运行什么系统,你都可以实例化这些类,因为它们提供的操作不做任何系统调用 **

##### 通用性质

路径是不可变并可哈希的。相同风格的路径可以排序与比较。

>>> PurePosixPath('foo') == PurePosixPath('FOO')

False

>>> PureWindowsPath('foo') == PureWindowsPath('FOO')

True

>>> PureWindowsPath('FOO') in { PureWindowsPath('foo') }

True

>>> PureWindowsPath('C:') < PureWindowsPath('d:')

True

不同风格的路径比较得到不等的结果并且无法被排序:

>>> PureWindowsPath('foo') == PurePosixPath('foo')

False

>>> PureWindowsPath('foo') < PurePosixPath('foo')

Traceback (most recent call last):

File "", line 1, in

TypeError: '

##### 运算符

斜杠操作符有助于操作子路径

>>> p = PurePath('/etc')

>>> p

PurePosixPath('/etc')

>>> p / 'init.d' / 'apache2'

PurePosixPath('/etc/init.d/apache2')

>>> q = PurePath('bin')

>>> '/usr' / q

PurePosixPath('/usr/bin')

文件对象可用于任何接受 os.PathLike 接口实现的地方

>>> import os

>>> p = PurePath('/etc')

>>> os.fspath(p)

'/etc'

路径的字符串表示法

>>> p = PurePath('/etc')

>>> str(p)

'/etc'

>>> p = PureWindowsPath('c:/Program Files')

>>> str(p)

'c:\\Program Files'

>>> bytes(p)

b'/etc' # 只推荐在 Unix下调用bytes

##### 访问路径独立组件

可以使用以下特征属性:

PurePath.parts

返回一个元组,可以访问路径的多个组件

>>> p = PurePath('/usr/bin/python3')

>>> p.parts

('/', 'usr', 'bin', 'python3')

>>> p = PureWindowsPath('c:/Program Files/PSF')

>>> p.parts

('c:\\', 'Program Files', 'PSF')

##### 方法和特征属性

可以使用以下特征属性:

PurePath.drive

一个表示驱动器盘符或命名的字符串

>>> PureWindowsPath('c:/Program Files/').drive

'c:'

>>> PureWindowsPath('/Program Files/').drive

''

>>> PurePosixPath('/etc').drive

''

###### PurePath.**root**

一个表示(本地或全局)根的字符串

>>> PureWindowsPath('c:/Program Files/').root

'\\'

>>> PureWindowsPath('c:Program Files/').root

''

>>> PurePosixPath('/etc').root

'/'

###### PurePath.**anchor**

驱动器和根的联合

>>> PureWindowsPath('c:/Program Files/').anchor

'c:\\'

>>> PureWindowsPath('c:Program Files/').anchor

'c:'

>>> PurePosixPath('/etc').anchor

'/'

###### PurePath.**parents**

一个不可变序列,提供对路径逻辑祖先的访问

>>> p = PureWindowsPath('c:/foo/bar/setup.py')

>>> p.parents[0]

PureWindowsPath('c:/foo/bar')

>>> p.parents[1]

PureWindowsPath('c:/foo')

>>> p.parents[2]

PureWindowsPath('c:/')

###### PurePath.**parent**

返回当前路径的父路径

>>> p = PurePosixPath('/a/b/c/d')

>>> p.parent

PurePosixPath('/a/b/c')

>>> p = PurePosixPath('/')

>>> p.parent

PurePosixPath('/')

>>> p = PurePosixPath('.')

>>> p.parent

PurePosixPath('.')

>>> p = PurePosixPath('foo/..')

>>> p.parent

PurePosixPath('foo')

** 如果想要向上移动任意文件系统路径,推荐先使用 Path.resolve() 来解析符号链接以及消除 ".." 组件。**

PurePath.name

一个表示最后路径组件的字符串,排除了驱动器与根目录

>>> PurePosixPath('my/library/setup.py').name

'setup.py'

###### PurePath.**suffix**

最后一个组件的文件扩展名

>>> PurePosixPath('my/library/setup.py').suffix

'.py'

>>> PurePosixPath('my/library.tar.gz').suffix

'.gz'

>>> PurePosixPath('my/library').suffix

''

###### PurePath.**suffixes**

路径的文件扩展名列表

>>> PurePosixPath('my/library.tar.gar').suffixes

['.tar', '.gar']

>>> PurePosixPath('my/library.tar.gz').suffixes

['.tar', '.gz']

>>> PurePosixPath('my/library').suffixes

[]

###### PurePath.**stem**

最后一个路径组件,除去后缀

>>> PurePosixPath('my/library.tar.gz').stem

'library.tar'

>>> PurePosixPath('my/library.tar').stem

'library'

>>> PurePosixPath('my/library').stem

'library'

###### PurePath.**as_posix()**

返回使用正斜杠(/)的路径字符串

>>> p = PureWindowsPath('c:\\windows')

>>> str(p)

'c:\\windows'

>>> p.as_posix()

'c:/windows'

###### PurePath.**as_uri()**

将路径表示为 file URL的格式。如果并非绝对路径,抛出 ValueError。

>>> p = PurePosixPath('/etc/passwd')

>>> p.as_uri()

'file:///etc/passwd'

>>> p = PureWindowsPath('c:/Windows')

>>> p.as_uri()

'file:///c:/Windows'

###### PurePath.**is_absolute()**

返回此路径是否为绝对路径。如果路径同时拥有驱动器符与根路径(如果风格允许)则将被认作绝对路径。

>>> PurePosixPath('/a/b').is_absolute()

True

>>> PurePosixPath('a/b').is_absolute()

False

>>> PureWindowsPath('c:/a/b').is_absolute()

True

>>> PureWindowsPath('/a/b').is_absolute()

False

>>> PureWindowsPath('c:').is_absolute()

False

###### PurePath.**is_reserved()**

PureWindowsPath,如果路径是被 Windows 保留的则返回 True,否则 False。在 PurePosixPath,总是返回 False。

>>> PureWindowsPath('nul').is_reserved()

True

>>> PurePosixPath('nul').is_reserved()

False

###### PurePath.**joinpath(\*other)**

调用此方法等同于将每个 other 参数中的项目连接在一起

>>> PurePosixPath('/etc').joinpath('passwd')

PurePosixPath('/etc/passwd')

>>> PurePosixPath('/etc').joinpath(PurePosixPath('passwd'))

PurePosixPath('/etc/passwd')

>>> PurePosixPath('/etc').joinpath('init.d', 'apache2')

PurePosixPath('/etc/init.d/apache2')

>>> PureWindowsPath('c:').joinpath('/Program Files')

PureWindowsPath('c:/Program Files')

###### PurePath.**match(pattern)**

将此路径与提供的通配符风格的模式匹配。如果匹配成功则返回 True,否则返回 False。

如果 pattern 是相对的,则路径可以是相对路径或绝对路径,并且匹配是从右侧完成的,例如:

>>> PurePath('a/b.py').match('*.py')

True

>>> PurePath('/a/b/c.py').match('b/*.py')

True

>>> PurePath('/a/b/c.py').match('a/*.py')

False

如果 pattern 是绝对的,则路径必须是绝对的,并且路径必须完全匹配:

>>> PurePath('/a.py').match('/*.py')

True

>>> PurePath('a/b.py').match('/*.py')

False

# 大小写的区分

>>> PureWindowsPath('b.py').match('*.PY')

True

###### PurePath.**relative_to(\*other)**

计算此路径相对 other 表示路径的版本。如果不可计算,则抛出 ValueError:

```python

>>> p = PurePosixPath('/etc/passwd')

>>> p.relative_to('/')

PurePosixPath('etc/passwd')

>>> p.relative_to('/etc')

PurePosixPath('passwd')

>>> p.relative_to('/usr')

Traceback (most recent call last):

File "", line 1, in File "pathlib.py", line 694, in relative_to

.format(str(self), str(formatted)))

ValueError: '/etc/passwd' does not start with '/usr'

```

###### PurePath.**with_name(name)**

返回一个新的路径并修改 name。如果原本路径没有 name,ValueError 被抛出

>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')

>>> p.with_name('setup.py')

PureWindowsPath('c:/Downloads/setup.py')

>>> p = PureWindowsPath('c:/')

>>> p.with_name('setup.py')

Traceback (most recent call last):

File "", line 1, in

File "/home/antoine/cpython/default/Lib/pathlib.py", line 751, in with_name

raise ValueError("%r has an empty name" % (self,))

ValueError: PureWindowsPath('c:/') has an empty name

###### PurePath.**with_suffix(suffix)**

返回一个新的路径并修改后缀 suffix。如果原本的路径没有后缀,新的 suffix 则被追加以代替。如果 suffix 是空字符串,则原本的后缀被移除:

```python

>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')

>>> p.with_suffix('.bz2')

PureWindowsPath('c:/Downloads/pathlib.tar.bz2')

>>> p = PureWindowsPath('README')

>>> p.with_suffix('.txt')

PureWindowsPath('README.txt')

>>> p = PureWindowsPath('README.txt')

>>> p.with_suffix('')

PureWindowsPath('README')

```

##### Path 具体路径

具体路径是纯路径的子类。除了后者提供的操作之外,它们还提供了对路径对象进行系统调用的方法。

有以下三种方法可以实例化具体路径:

class pathlib.Path(*pathsegments)

一个 PurePath 的子类,此类以当前系统的路径风格表示路径(实例化为 PosixPath 或 WindowsPath):

>>> Path('setup.py')

PosixPath('setup.py') # Unix 系统

WindowsPath('setup.py') # Windows 系统

###### class pathlib.**PosixPath(*pathsegments)**

>>> PosixPath('/etc')

PosixPath('/etc')

###### class pathlib.**WindowsPath(*pathsegments)**

>>> WindowsPath('c:/Program Files/')

WindowsPath('c:/Program Files')

方法

除纯路径方法外,具体路径还提供以下方法。

classmethod Path.cwd()

返回一个新的表示当前目录的路径对象,和 os.getcwd() 返回的相同

>>> Path.cwd()

PosixPath('/home/antoine/pathlib')

###### classmethod Path.**home()**

返回一个表示当前用户根目录的新路径对象,和 os.path.expanduser() 构造含 ~ 路径返回的相同

>>> Path.home()

PosixPath('/home/antoine')

###### Path.**stat()**

返回此路径的信息(类似于 os.stat())。

>>> p = Path('setup.py')

>>> p.stat().st_size

956

>>> p.stat().st_mtime

1327883547.852554

###### Path.**chmod(mode)**

改变文件的模式和权限,和 os.chmod() 一样:

>>> p = Path('setup.py')

>>> p.stat().st_mode

33277

>>> p.chmod(0o444)

>>> p.stat().st_mode

33060

###### Path.**exists()**

此路径是否指向一个已存在的文件或目录

>>> Path('.').exists()

True

>>> Path('setup.py').exists()

True

>>> Path('/etc').exists()

True

>>> Path('nonexistentfile').exists()

False

###### Path.**expanduser()**

返回展开了根目录与~的构造,和 os.path.expanduser() 一样:

>>> p = PosixPath('~/films/Monty Python')

>>> p.expanduser()

PosixPath('/home/eric/films/Monty Python')

###### Path.**glob(pattern)**

生成所有匹配 pattern 的文件

>>> sorted(Path('.').glob('*.py'))

[PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')]

>>> sorted(Path('.').glob('*/*.py'))

[PosixPath('docs/conf.py')]

“**” 模式表示 此目录以及所有子目录

>>> sorted(Path('.').glob('**/*.py'))

[PosixPath('build/lib/pathlib.py'),

PosixPath('docs/conf.py'),

PosixPath('pathlib.py'),

PosixPath('setup.py'),

PosixPath('test_pathlib.py')]

###### Path.**group()**

返回拥有此文件的用户组。

Path.is_dir()

如果路径指向一个目录(或者一个指向目录的符号链接)则返回 True,如果指向其他类型的文件则返回 False

当路径不存在或者是一个破损的符号链接时也会返回 False

Path.is_file()

如果路径指向一个正常的文件(或者一个指向正常文件的符号链接)则返回 True,如果指向其他类型的文件则返回 False。

当路径不存在或者是一个破损的符号链接时也会返回 False

Path.is_symlink()

如果路径指向符号链接则返回 True, 否则 False。

如果路径不存在也返回 False

Path.is_socket()

如果路径指向一个 Unix socket 文件(或者指向 Unix socket 文件的符号链接)则返回 True,如果指向其他类型的文件则返回 False。

当路径不存在或者是一个破损的符号链接时也会返回 False

Path.is_fifo()

如果路径指向一个先进先出存储(或者指向先进先出存储的符号链接)则返回 True ,指向其他类型的文件则返回 False。

当路径不存在或者是一个破损的符号链接时也会返回 False

Path.is_block_device()

如果文件指向一个块设备(或者指向块设备的符号链接)则返回 True,指向其他类型的文件则返回 False。

当路径不存在或者是一个破损的符号链接时也会返回 False

Path.is_char_device()

如果路径指向一个字符设备(或指向字符设备的符号链接)则返回 True,指向其他类型的文件则返回 False。

当路径不存在或者是一个破损的符号链接时也会返回 False

Path.iterdir()

当路径指向一个目录时,产生该路径下的对象的路径

>>> p = Path('docs')

>>> for child in p.iterdir(): child

...

PosixPath('docs/conf.py')

PosixPath('docs/_templates')

PosixPath('docs/make.bat')

PosixPath('docs/index.rst')

PosixPath('docs/_build')

PosixPath('docs/_static')

PosixPath('docs/Makefile')

###### Path.**mkdir(mode=0o777, parents=False, exist_ok=False)**

创建目录

Path.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None)

打开路径指向的文件

>>> p = Path('setup.py')

>>> with p.open() as f:

... f.readline()

...

'#!/usr/bin/env python3\n'

###### Path.**owner()**

返回拥有此文件的用户名。如果文件的 UID 无法在系统数据库中找到,则抛出 KeyError。

Path.read_bytes()

以字节对象的形式返回路径指向的文件的二进制内容:

>>> p = Path('my_binary_file')

>>> p.write_bytes(b'Binary file contents')

20

>>> p.read_bytes()

b'Binary file contents'

###### Path.**read_text(encoding=None, errors=None)**

以字符串形式返回路径指向的文件的解码后文本内容

>>> p = Path('my_text_file')

>>> p.write_text('Text file contents')

18

>>> p.read_text()

'Text file contents'

###### Path.**rename(target)**

使用给定的 target 将文件重命名

>>> p = Path('foo')

>>> p.open('w').write('some text')

9

>>> target = Path('bar')

>>> p.rename(target)

>>> target.open().read()

'some text'

###### Path.**replace(target)**

使用给定的 target 重命名文件或目录。

Path.resolve(target)

将路径绝对化,解析任何符号链接。返回新的路径对象:

>>> p = Path()

>>> p

PosixPath('.')

>>> p.resolve()

PosixPath('/home/antoine/pathlib')

# ‘..’组件也会被消除

>>> p = Path('docs/../setup.py')

>>> p.resolve()

PosixPath('/home/antoine/pathlib/setup.py')

###### Path.**rglob(pattern)**

与给定模式前面添加'**'一样调用 Path.glob():

>>> sorted(Path().rglob("*.py"))

[PosixPath('build/lib/pathlib.py'),

PosixPath('docs/conf.py'),

PosixPath('pathlib.py'),

PosixPath('setup.py'),

PosixPath('test_pathlib.py')]

###### Path.**rmdir()**

移除此目录。此目录必须为空的。

Path.samefile(other_path)

返回此目录是否指向与可能是字符串或者另一个路径对象的 other_path 相同的文件。

>>> p = Path('spam')

>>> q = Path('eggs')

>>> p.samefile(q)

False

>>> p.samefile('spam')

True

###### Path.**symlink_to(target, target_is_directory=False)**

将此路径创建为指向 target 的符号链接。在 Windows 下,如果链接的目标是一个目录则 target_is_directory 必须为 true (默认为 False)。在 POSIX 下, target_is_directory 的值将被忽略。

>>> p = Path('mylink')

>>> p.symlink_to('setup.py')

>>> p.resolve()

PosixPath('/home/antoine/pathlib/setup.py')

>>> p.stat().st_size

956

>>> p.lstat().st_size

8

###### Path.**touch(mode=0o666, exist_ok=True)**

将给定的路径创建为文件。

如果给出了 mode 它将与当前进程的 umask 值合并以确定文件的模式和访问标志。如果文件已经存在,则当 exist_ok 为 true 则函数仍会成功(并且将它的修改事件更新为当前事件),否则抛出 FileExistsError。

Path.unlink()

移除此文件或符号链接。如果路径指向目录,则用 Path.rmdir() 代替。

Path.write_bytes(data)

将文件以二进制模式打开,写入 data 并关闭:

>>> p = Path('my_binary_file')

>>> p.write_bytes(b'Binary file contents')

20

>>> p.read_bytes()

b'Binary file contents'

###### Path.**write_text(data, encoding=None, errors=None)**

将文件以文本模式打开,写入 data 并关闭:

>>> p = Path('my_text_file')

>>> p.write_text('Text file contents')

18

>>> p.read_text()

'Text file contents'

python path模块_python pathlib模块详解相关推荐

  1. 写python脚本管理_Python 文件管理实例详解

    本文实例讲述了Python 文件管理的方法.分享给大家供大家参考,具体如下: 一.Python中的文件管理 文件管理是很多应用程序的基本功能和重要组成部分.Python可以使文件管理极其简单,特别是和 ...

  2. python切片输出_Python语言之详解切片

    本篇文章主要讲述Python语言之详解切片,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. 切片操作就是对list,元组,字符串进行截取操作有了切片操作,很多地方循环就不再需要了 ...

  3. python中正则表达式_Python中正则表达式详解

    正则表达式是用来简洁表达一组字符串的表达式,本文主要和大家分享Python 中正则表达式知识详解,希望能帮助到大家.操作符说明实例.表示任何单个字符 [ ]字符集,单个字符取值范围[abc]表示a或b ...

  4. python元编程_python元编程详解(3)

    今天转载一片非常精彩的文章供大家欣赏:参考文章链接. python开发者门户一个很好的学习python的网站,大家有时间可以多看看. 下面正式开始今天的内容: 在理解元类之前,你需要先掌握Python ...

  5. python dict下标_Python库collections详解

    collections模块包含了除了内置类型list.dict.tuple之外的容器类型.本文详细介绍了Counter.defaultdict.namedtuple.OrderedDict.Chain ...

  6. python粘性拓展_Python 拓展之详解深拷贝和浅拷贝

    写在之前 在昨天的文章里 (零基础学习 Python 之字典),写字典的方法的时候留了一个小尾巴,那就是 copy() 方法还没讲.一是因为 copy 这个方法比较特殊,不单单是它表面的意思:二是以为 ...

  7. python mysql实例_Python 操作MySQL详解及实例

    使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy. Python-MySQL资格最老,核心由C语言打造, ...

  8. python复数类型转换_Python 复数数据类型详解(complex)[学习 Python 必备基础知识][看此一篇就够了]...

    您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 1 复 ...

  9. python集合输出_Python集合操作方法详解

    集合是无序的,天生不重复的数据组合,它的作用如下: 去重,即:把一个列表变成集合,就去重了 关系测试,即:测试两组集合的交集.并集和差集等 一.集合常用方法总结 二.定义 1.语法 >>& ...

最新文章

  1. 【angular5项目积累总结】列表多选样式框(1)
  2. 川教版计算机三年级下册教案,川教版小学三年级下册信息技术教案(全册)
  3. 四十三、Linux磁盘管理和Shell编程
  4. @RequestParam与@PathVariable的区别
  5. 第三次学JAVA再学不好就吃翔(part15)--基础语法之控制跳转语句
  6. git rebase 的使用
  7. 不缺流量却变现乏力?穿山甲重磅打造《App 如何变现创收》系列课程帮你找症结...
  8. JS 测试 Prototype
  9. vscode 打开函数表_效率倍增!10个超级好用的VScode使用技巧!
  10. js实现爬取QQ群管理页面所有QQ群成员信息
  11. i2cdetect i2cdump i2cget i2cset用法
  12. 计算机win10无法打开小键盘,win10数字小键盘开机不启动解决方法
  13. C#日期格式参考小结
  14. 双拼对简拼和混拼的支持
  15. 两种python调包进行拉丁超立方采样(lhs)
  16. 粤嵌实习-linux下madplay播放器的下载和使用、线程的介绍和创建一个广告循环播放线程
  17. 【它来了】搭载龙芯3A4000的国产办公电脑-桌面型机箱来了~
  18. e339 java_java-在Spring Mongo中从文档数组中删除项目
  19. 你的密码泄露没?触目惊心的密码泄露该如何查防
  20. 10天精读掌握:计算机组成与设计(COAD:Patterson and Hennessy) (第3天 2018/10.26)

热门文章

  1. [转]EntityFramework走马观花之CRUD(中)
  2. C++中的 .h 和 .cpp 区别详解
  3. JVM并发机制探讨—内存模型、内存可见性和指令重排序
  4. 互联网、SaaS的技术挑战与机遇
  5. C/C++好不好学习呢?
  6. 为什么大部分的C/C++码农都成不了高级工程师?真实原因是缺少核心能力!
  7. Linux学习笔记之系统路径和命令
  8. 进行api的HTML5inlinehook操作(飞秋官方下载)
  9. 用VC写Assembly代码(6)--附录3[X86指令使用详解]
  10. 为什么Python不支持 i ++ 语法