, s p7 ~/ E- T/ a! g5 V) x% Y" V) |6 I
getdir 获取当前目录 3 }$ ]9 e. o; b1 | % h! _! F4 ]( Y1 ?2 s7 ^! u' u* ~chdir 改变当前路径' q: i& R) u2 V& X% L5 c$ c
) E+ X$ e2 u9 a% w
' [- N* B) z- C7 z4 C8 o I5 q, e& h0 P$ Q/ A
cwd = os.getcwd()5 Q' y G$ c5 ` k) I
) V g/ }( Z$ }' D' q& @: e i8 tprint "1", cwd - a7 `% k: }& }# o( J 8 k& E. d' ]7 }- }# go down( i2 I$ C; L3 ~$ Q- N! `4 \
+ Y3 h- R* R0 @$ B, s0 qos.chdir("c:\qtest"); _5 o' X. s/ t7 D3 [- l1 b* N9 E
8 u* v+ k3 n, A' e8 @" Wprint "2", os.getcwd()+ O9 Y9 q0 ^/ _. q
" A6 ?" m( u9 E) c/ J5 ?, F6 F# go back up" b$ l) l3 J6 D6 q, I+ H. k8 C
" V" |2 L8 M9 K( O% uos.chdir(os.pardir)#返回当前目录的父目录 ! e$ @7 t+ K1 {! d& e: G8 x! Y9 \9 h0 \$ J) Q4 [$ p
print "3", os.getcwd() ' [/ Y L. `1 I7 S/ r+ {: a 5 q% ^" {7 c, h( ^! c : {" D5 g2 n) \% |9 ?. n2 X 9 J1 S4 d1 \- u; l( ~8 mmakedirs removedirs 生成和删除目录 ~+ ~" Y$ h5 o9 @. y9 C' B
# e2 Z) p8 v# |1 L* `makedirs可以生成多层递归目录, removedirs可以删除多层递归的空目录,若目录中有文件则无法删除 7 A ?: `5 ^! d; R) H" [6 W5 D1 K9 d
* i' l# p# m6 w) ? s: ]: M( r
6 V$ A8 [) r4 a& v! D
import os 4 q3 H ~+ ?1 U. V: d 6 Y) i! t5 k: \! d* i7 }$ Jos.makedirs("c:\\test\\multiple\\levels") 3 w% ~. q; E: {' `. s; A8 g+ _! j1 m/ ]7 F9 P- |( \$ D+ U
fp = open("c:\\test\\multiple\\levels\\file.txt", "w"). `1 u: C' h" t; L" e; B/ h( A
3 J8 x7 [2 H2 v. Y
fp.write("inspector praline") ) l1 s' ]3 ~; I* N1 I m4 c* ^) g- Z2 Y8 ]fp.close()" o9 z/ J3 a- S: D8 S3 {
: L; { V/ _ F5 X+ i
# remove the file1 P# r1 v0 s) ^( Q; F1 G( | }. W
: _0 {5 a @1 E4 T7 V7 Vos.remove("c:\\test\\multiple\\levels\\file.txt") + b5 D$ }: `8 {# H* J( x ! L& Y: w% Z2 e/ z8 h) _. @& s# and all empty directories above it3 \0 x9 h0 c: j) y" I, R
1 Q* l& @9 t0 T7 ]$ Ros.removedirs("c:\\test\\multiple\\levels") 7 m* s! P" ], u- O# s 4 x+ y8 x$ \8 o) I3 y 0 H3 W2 Z. ^, s
0 J( f, s5 u t; s5 gmkdir 和 rmdir只能处理单级目录操作. U7 f! z0 U2 n
7 c! g% U+ _; C% J若要删除非空目录, 可使用 shutil模块中的rmtree函数1 }4 y! X- {: H
5 B' M z2 n$ J# n* c& K
1 h2 _/ z5 [7 Q- r 3 ]6 J' @+ k, F5 |3. 文件属性的操作 " h7 E* n/ g! o* I2 o. [1 d5 m, s( ~ 9 ^9 R* O/ ~, ^3 g8 a6 Qimport os* O' `5 e1 @: l: o; |3 _+ u
2 X, ]0 r" K+ c! V) simport time, z9 {9 A. N0 d0 b/ Z+ c
6 m6 E- m1 a. V/ G, }file = 'c:\qtest\editor.pyc': v# l: l% ]* H; j4 P
& p, n( e; [" N2 N) n$ a7 c
2 W/ J. `0 A4 F. @: `/ O, V+ z: Z3 G" s, L8 r
st = os.stat(file) 0 h7 k& K7 c. z. k/ P5 g/ y7 E0 K0 q0 |2 B
print "state", file @9 k+ H N) }0 X: |; B/ y9 O K) T$ k4 Z% Q+ Y4 P, K
) ]8 n; B4 z s! w * W: d% i. b" ^: L# X5 ~8 Ddef dump(st): & c% v6 \6 f+ D5 f* [$ r) F# N: V " B1 [6 [. d: o Umode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime = st 1 j. l' }! D3 X & Z0 I9 Z! [5 Z5 v9 D* X2 |. Mprint "- size:", size, "bytes" " Q" \3 ~4 c3 D- T0 N1 S- W( _) }: c: I3 P* F+ N2 D- I
print "- owner:", uid, gid. E; [/ @+ g2 v0 _+ D! I8 ]2 L
8 }0 j% {$ v) _ : }" Y0 n+ a: f4 |) ?print dir(st)& l0 F, m' W# G
6 J; B: ]/ A/ x! |: y
print ; S6 K: B/ W: d% d& v' S; D 5 ?5 o0 x* r, r+ l! _, ?% bdump(st)% |" G& w* s# G9 w+ a
+ _7 d/ w, y0 J) p: A m* c. z% w
# print 0 X0 Q+ U% U4 { # ~) J+ b- j. Q3 V 6 Y- o" w j* M
( `5 S. ]" [. ^! I- O' @* bfp = open(file) 7 G7 W6 ^0 c2 D( t; P$ t1 a9 P V& I; u4 B/ q
st = os.fstat(fp.fileno()) ! G) E7 d4 ?, Y4 D- S% J# D& C! J- P& _' c! l5 a! x G7 I$ {8 J) j
print "fstat", file: ]: ?; v3 M' T: k) @$ R% d9 p5 B. F
( Q. l! ~8 z" ?" m* s. Idump(st) 5 C0 B/ n. r* l* y( K& i6 L 6 U6 F' a3 I0 ?7 q" e 0 U; m( [* F* [8 \ + i8 H$ U+ u: dremark: os.stat(path/file)返回文件的对应属性值st_mode (protection bits), st_ino (inode number), st_dev (device), st_nlink (number of hard links), st_uid (user id of owner), st_gid (group id of owner), st_size (size of file, in bytes), st_atime (time of most recent access), st_mtime (time of most recent content modification), st_ctime (platform dependent; time of most recent metadata change on Unix, or the time of creation on Windows):( p9 ]5 R }4 o" q' s3 w$ O