• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

游客您好
第三方账号登陆
  • 点击联系客服

    在线时间:8:00-16:00

    客服QQ

    2938366614

    电子邮件

    pcs2938366614@163.com
  • 友智园

    随时随地学习编程

  • 扫描二维码

    关注微信公众号

Lv.16 站长
1号会员,11532活跃度,2019/12/31 加入学习
  • 622发帖
  • 492主题
  • 7关注
  • 69842粉丝
官方账号
  • 满级大神

    用户达到16级即可
  • 老兵专属

    老用户专属勋章
  • 达人守护

    友智园守护达人
  • 牛气冲天

    2021新春活动专属
  • 虎虎生威

    2022虎年限定勋章
推荐课程更多
优秀讲师更多
课堂交流更多

python教程14-标准库

[复制链接]
友智君官方认证 实名认证 发表于 2020-9-2 16:07:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
Python 标准库. t- I* C. A$ d5 D, V* Q* p- D
简介
# X0 C9 f' r( [3 S9 K+ `Python 标准库是随 Python 附带安装的,它包含大量极其有用的模块。熟悉 Python 标准库是十分重要的,因为如果你熟悉这些库中的模块,那么你的大多数问题都可以简单快捷地使用它们来解决。( }1 u% n, t. z+ q% s1 X

/ p, H7 Z) j- i3 ?8 C我们已经研究了一些这个库中的常用模块。你可以在 Python 附带安装的文档的“库参考”一节中了解 Python 标准库中所有模块的完整内容。
" h# m* M( G! |/ p" V
4 Z( N! p  N& n8 e1 Zsys 模块
) I1 T# u3 ]- G3 l& M7 G1 Psys 模块包含系统对应的功能。我们已经学习了 sys.argv 列表,它包含命令行参数。# X: ]2 C( N8 v$ M* ]- e/ ^

( d; D  N- Z9 v6 T/ L命令行参数" v% x. K4 C2 i& [( y- g2 F. }! e
例 14.1 使用 sys.argv# i+ ^8 q) b. I3 X- Q
  1. #!/usr/bin/python
    ! N+ Q! Z( g2 j0 ^( B% {

  2. ; h( a# ?# O' j5 t1 p
  3.     # Filename: cat.py6 Q0 c" r1 F  O, p7 k# N1 ^  b/ h2 @

  4. ; j2 s$ o; }& @2 ~2 {3 m, ?' }
  5. / ?/ b7 z$ |; p

  6. 9 h& j7 J5 f- h4 {1 t* A
  7.     import sys
    . L+ O1 \& h. M7 K3 }: b; ^! H5 t
  8. + N. g- a6 `3 R% N4 M4 [' R2 _% u0 E
  9. 8 n$ R- q" E' z+ D# C
  10. 4 x& F7 }6 m; N1 y( @
  11.     def readfile(filename):
    8 O; y3 l8 _, F0 o0 b/ y
  12. 5 `" P9 x3 }! J' R& }& `
  13.     '''Print a file to the standard output.'''- l& @* o$ U, Y* X2 K1 `. f

  14. - q& N5 {+ o: f. g+ B" @
  15.     f = file(filename)
    6 X' q- ^# S! t) o; ?

  16. % v( g& Q; e+ A0 U, x/ l
  17.     while True:
    9 a7 T1 Q& Z0 v
  18. % }  J0 o0 G% ?" G8 y
  19.     line = f.readline()
    / l! J) L6 N, C1 G& y# w
  20. & A, L8 ~0 O) f' B) b% ^
  21.     if len(line) == 0:6 d+ L4 d1 e5 O0 B0 i% N
  22. ; ]* q9 e6 n1 u, C" P
  23.     break
    5 g0 ^1 e- W' `
  24. ) M' C0 @$ i8 u) B+ u! `+ }
  25.     print line, # notice comma0 I6 w, ?- l2 q5 W) u1 \. Y

  26. 5 F5 ^/ ^5 J) W2 J+ J1 l+ }: A$ t
  27.     f.close()  S; o$ n* ~2 r  |7 @

  28. , L  r- r$ K$ K& K$ V% y1 n

  29. - J& `( T/ S2 I; b2 T/ v1 M
  30. ) N1 G4 Q% c. c/ F4 p  p  Y. \" P' i
  31.     # Script starts from here0 [* x8 K7 M7 I$ N$ T

  32. + [( U( U0 s2 H0 \# E  t6 Z  ]
  33.     if len(sys.argv) < 2:
    ( o4 u- G1 F  ]* l' w
  34. 4 r* j$ U: S) h9 g6 {) e
  35.     print 'No action specified.'2 I3 L. x$ M4 e, c  C$ C5 y

  36. 5 X# R, G" `* L- d7 O
  37.     sys.exit()
    : |; {2 a1 `  U9 n( S( }0 g9 `
  38. . }% [8 x  q. M7 y5 |( e2 W
  39. 1 m8 ^2 g& v7 m$ {2 n% c: R: E; L. j

  40. 6 |* `" s: T& S) U+ o* e
  41.     if sys.argv[1].startswith('--'):1 ?' ~, J8 j; X7 Q
  42. ' U: C. ^4 W- {9 X; J5 N
  43.     option = sys.argv[1][2:]
    ' {( @- s/ J$ r/ p0 ^0 N

  44. . _+ ]% j. u+ x* `
  45.     # fetch sys.argv[1] but without the first two characters
    4 F+ F5 [* }) q" {" i6 b4 }' c0 N
  46. . r) S7 J0 q. Z# _
  47.     if option == 'version':
    0 _/ I6 N: f( m4 [
  48. 3 K# H; r1 @' ?* w
  49.     print 'Version 1.2'
    . K* {( N* A. W; r. C5 c. F

  50. % O. }2 [. N9 O; `+ v9 _' q* R
  51.     elif option == 'help':" u( w9 i4 }+ x- q1 u

  52. 7 G2 z8 x# F0 F2 ]. [
  53.     print '''\3 q: ^7 u3 n, X- j& B$ f3 q! Y
  54.   f2 N* ?. O9 n. [
  55.     This program prints files to the standard output.
    $ a6 ?% T+ ?& y9 {% p/ U0 q

  56. . G4 p. B/ _- f3 e
  57.     Any number of files can be specified.
    ( j  C$ e9 o6 e+ e: i
  58. ) y+ \- m6 L# W7 K! z, S
  59.     Options include:8 v9 I: d) c" J' D/ y8 V

  60. ( M% K: Y7 ~/ D/ |9 G% x
  61.       --version : Prints the version number$ k0 B' u5 B, ^1 b+ g) P

  62. $ C! O5 J6 S" ~1 C8 X3 P! g$ z" H
  63.       --help: Display this help'''' `6 s- h) a) ?3 P( P, h

  64. ( i7 y* x2 f2 ]0 G& z
  65.     else:
    $ r8 C7 c) a  D5 M1 X

  66. 5 ^% y! i% A% i: }8 d
  67.     print 'Unknown option.'. G4 P7 y; b3 w

  68. ' Q. u/ y9 d( O# V9 Y) z
  69.     sys.exit()
    / ?8 `8 U3 ~$ F- g. K- j. K6 s" @
  70. ' {) L/ Q' e2 q/ t5 a" G9 a
  71.     else:0 P2 w* T8 S) ~! a' q% K
  72. $ L1 S2 H3 t0 P* o
  73.     for filename in sys.argv[1:]:6 f2 {" ]. @; f) s
  74. ; ?* P6 g, X5 _- d) }2 _
  75.     readfile(filename)
复制代码
1 }  `/ m+ ?  D+ A$ e, {
输出
1 o: b; I- F/ ]3 t( n2 T+ T, O
" v( j: K2 ?2 l0 v6 e
  1.   $ python cat.py
    8 D& X  V4 E- D
  2.     No action specified.
    # [2 Y4 [2 E9 W- ]( K

  3. ' x% P: T4 w8 I9 z& S6 t6 e
  4.     $ python cat.py --help" f9 \9 b0 R* t1 |/ j6 a8 b
  5.     This program prints files to the standard output.5 j& L% A/ N3 x/ _
  6.     Any number of files can be specified.% ~+ a, R: k7 r' T
  7.     Options include:
    % Z) w8 S+ R0 A# y% G: n9 x2 c% E
  8.       --version : Prints the version number; s- ]" ~  \- `, u3 n% E
  9.       --help    : Display this help
    & Y$ w% P( z( |* P

  10. ) r, D! c( I+ v% f  n; n' N# G6 T: `
  11.     $ python cat.py --version
    ) e2 Q2 r8 `7 q6 Y: z3 G
  12.     Version 1.2$ [/ K7 f4 D- m- `
  13. 5 M% h* X9 z0 j9 f
  14.     $ python cat.py --nonsense( |: h/ x# ~- t5 F7 K3 N
  15.     Unknown option.
    3 S0 o! X. F1 b. @8 k3 r4 n- p

  16. # J* q  L# x/ y& x$ B, R
  17.     $ python cat.py poem.txt
    ( a) Q; I! F( d0 i: a
  18.     Programming is fun
    $ A9 ~" w2 t7 h' A" K9 \* m. v2 N
  19.     When the work is done
    9 M- P6 i( e4 n2 Z& ^3 f
  20.     if you wanna make your work also fun:
    / _9 o2 P. B' C( B+ o) g
  21.             use Python!
复制代码

- R9 j% X0 l0 R, y( q它如何工作5 S. L$ J" j2 g3 o
# x8 h$ n4 n3 }8 y* w- ~, U
这个程序用来模范 Linux/Unix 用户熟悉的 cat 命令。你只需要指明某些文本文件的名字,这个程序会把它们打印输出。
" t/ `* Q' P$ u. E% O
% d5 G$ U  n6 d4 T在 Python 程序运行的时候,即不是在交互模式下,在 sys.argv 列表中总是至少有一个项目。它就是当前运行的程序名称,作为 sys.argv[0](由于 Python 从 0 开始计数)。其他的命令行参数在这个项目之后。3 T8 o) z- [) _% |, {5 E4 q# s+ b/ j

1 [" j* e6 k/ }为了使这个程序对用户更加友好,我们提供了一些用户可以指定的选项来了解更多程序的内容。我们使用第一个参数来检验我们的程序是否被指定了选项。如果使用了--version 选项,程序的版本号将被打印出来。类似地,如果指定了--help 选项,我们提供一些关于程序的解释。我们使用 sys.exit 函数退出正在运行的程序。和以往一样,你可以看一下 help(sys.exit)来了解更多详情。1 }' x7 H9 @$ I  a$ u2 z/ ~
; R9 j. s, _# h! X
如果没有指定任何选项,而是为程序提供文件名的话,它就简单地打印出每个文件地每一行,按照命令行中的顺序一个文件接着一个文件地打印。
* n' r/ D+ ^, G, B% {; y# ]1 s: X; H" E: ~$ C
顺便说一下,名称 cat 是 concatenate 的缩写,它基本上表明了程序的功能——它可以在输出打印一个文件或者把两个或两个以上文件连接/级连在一起打印。; _2 \$ Z' L6 i' L$ _7 r

9 B# |9 U. g$ a5 p4 U# c& n更多 sys 的内容

0 E3 L" x9 k# y; K$ Isys.version 字符串给你提供安装的 Python 的版本信息。sys.version_info 元组则提供一个更简单的方法来使你的程序具备 Python 版本要求功能。5 p( Y( S" \( H$ m7 w: h

+ q7 P% a' _7 g/ N8 B* O
  1. [swaroop@localhost code]$ python
    ) v& C! {, ?% t, n% n( x- p3 K
  2.     >>> import sys7 G* x- M5 l# v/ y, Y- Z+ h; s
  3.     >>> sys.version7 j2 Q5 q- Z' n
  4.     '2.3.4 (#1, Oct 26 2004, 16:42:40) \n[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)]'
    * h" p, U! K" }6 k
  5.     >>> sys.version_info5 P8 D* t& k7 B- B6 B0 }
  6.     (2, 3, 4, 'final', 0)
复制代码

6 _* V0 [5 f9 p& i对于有经验的程序员,sys 模块中其他令人感兴趣的项目有 sys.stdin、sys.stdout 和 sys.stderr 它们分别对应你的程序的标准输入、标准输出和标准错误流。
% M# ]1 D! c: E* y6 j
+ [4 c& i* n( ^os 模块2 V* _8 w/ }8 j' B$ G  j. v
这个模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在 Linux 和 Windows 下运行。一个例子就是使用 os.sep 可以取代操作系统特定的路径分割符。
4 f& p, s) M2 m: b( J5 r" g
" @9 p1 d/ ~  k3 x. B下面列出了一些在 os 模块中比较有用的部分。它们中的大多数都简单明了。
+ [" L/ s+ n. G+ F! ~& F7 Y$ E$ y" K& z7 j, i9 S8 U8 O
os.name 字符串指示你正在使用的平台。比如对于 Windows,它是'nt',而对于 Linux/Unix 用户,它是'posix'。# u* S+ J1 F# j3 S4 a% M$ {
5 |1 j. e5 D' u. d* q& Y
os.getcwd()函数得到当前工作目录,即当前 Python 脚本工作的目录路径。
4 ^$ g$ f9 ?& {+ O
9 p0 s2 Z0 v0 J/ uos.getenv() os.putenv()函数分别用来读取和设置环境变量。
# [8 x6 W* X6 j# o0 u. j+ I
" M4 J6 h7 A% [' ~( M3 ^os.listdir()
返回指定目录下的所有文件和目录名。! J$ y4 v; {- J5 K9 r

2 l- X4 a6 z+ y/ n6 g$ B, hos.remove()函数用来删除一个文件。2 g- h% f) T" k) ~/ U" e) u
8 ~5 j# M6 H9 n' K: b3 B5 o
os.system()函数用来运行 shell 命令。
3 |- B% S* `- P# D3 L( U7 e5 e/ q" ?! B2 T. _
os.linesep 字符串给出当前平台使用的行终止符。例如,Windows 使用'\r\n',Linux 使用'\n'而 Mac 使用'\r'。( ]- d& D' p7 w% u  n& m6 u7 n
; ?" c7 E6 ]8 ]/ J( r4 R( p7 S
os.path.split()函数返回一个路径的目录名和文件名。- _3 G  N$ S& y: W% p
; l% `2 f8 r9 ~+ I
  1.     >>> os.path.split('/home/swaroop/byte/code/poem.txt')# t4 t4 d: g, p. V- |
  2.     ('/home/swaroop/byte/code', 'poem.txt')
复制代码

) F( W- z9 u2 ?) ~, y/ vos.path.isfile()os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.path.existe()函数用来检验给出的路径是否真地存在。
# C5 |2 c6 B- y9 h6 u% a你可以利用 Python 标准文档去探索更多有关这些函数和变量的详细知识。你也可以使用 help(sys)等等。3 n" N4 h- R1 ]
1 F6 G; B4 \' C# p
概括
! e& z' y1 T( L; K3 n8 c" h我们已经学习了 Python 标准库中的 sys 模块和 os 模块的一部分功能。你应该利用 Python 标准文档去学习这两个模块以及其他模块的更多内容。$ G/ G8 O3 s% f9 e& Z2 }

: R- z8 }4 Y7 ?$ K5 _# S- x) h接下来,我们将要学习 Python 中剩余的几个方面的内容,从而使我们的 Python 课程更加 完整 。
( i" @9 l7 r# z. `1 |6 [
1 K1 i5 N% u! N2 \
客服QQ:2938366614

精彩评论35

一阵风儿吹过 发表于 2020-9-2 16:11:05 | 显示全部楼层
鼎力支持!!
: Z4 K! F7 o4 c8 d7 q
该用户还没有理想!
广丰汇源明珠店 发表于 2020-9-2 16:11:05 | 显示全部楼层
广告位,,坐下看看6 E$ X9 ?: G- M- j- l- ^
该用户还没有理想!
jk10086 发表于 2020-9-2 16:11:05 | 显示全部楼层
我也顶起出售广告位
4 H6 K- M9 y7 j7 K0 O& G6 k/ K( M
该用户还没有理想!
gdzwx 发表于 2020-9-2 16:11:05 | 显示全部楼层
very good
5 M* \. [1 `1 M# y- q( J* s' f' w) k
该用户还没有理想!
游小懒 发表于 2020-9-2 16:11:05 | 显示全部楼层
纯粹路过,没任何兴趣,仅仅是看在老用户份上回复一下
' |4 V) n2 A* D3 P) }2 h" X/ e
该用户还没有理想!
peanut 发表于 2020-9-2 16:11:08 | 显示全部楼层
这么好的帖子,顶顶顶呀7 {7 `6 L/ r5 f- R
该用户还没有理想!
LUCKBOY 发表于 2020-9-2 16:11:08 | 显示全部楼层
求沙发
; Q! D8 K9 S  F/ K* ^
该用户还没有理想!
榴莲飘香 发表于 2020-9-2 16:11:08 | 显示全部楼层
上头条呀
该用户还没有理想!
花儿朵朵开 发表于 2020-9-2 16:11:08 | 显示全部楼层
围观 围观 沙发在哪里!!!
. P" I1 m6 a  ~& R, W
该用户还没有理想!
懒得打字嘛,点击右侧快捷回复 【友智园专属】
您需要登录后才可以回帖 登录 | 立即注册 手机动态码快速登录

本版积分规则

关于我们
  • 关注官方微信

  • QQ在线客服

    在线联系
  • 友智园
  • 山东省菏泽市


Copyright © 2019- PCS Rights Reserved