日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python关闭对象语法_Python基础及语法(七)

發(fā)布時(shí)間:2025/3/11 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python关闭对象语法_Python基础及语法(七) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文件操作

文件常用操作

open:打開

read:讀取

write:寫入

close:關(guān)閉

readline:行讀取

readlines:多行讀取

seek:文件指針操作

tell:指針位置

打開操作

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

mode模式

r:只讀打開

w:只寫打開新文件

x:創(chuàng)建新文件

a:只寫打開,追加內(nèi)容

b:二進(jìn)制模式

t:缺省模式,文本模式

+:讀或?qū)懘蜷_后,追加缺失模式

buffering緩沖區(qū)

缺省-1,二進(jìn)制模式使用io.DEFAULT_BUFFER_SIZE可以查到默認(rèn)是4096或8192。文本模式終端設(shè)備下是行緩沖。

0表示關(guān)閉行緩沖。

1表示只使用行緩沖。

大于1表示設(shè)置二進(jìn)制模式緩存值。

緩沖區(qū)指暫時(shí)放置在內(nèi)存。

encoding

編碼

errors

None和strict表示錯(cuò)誤拋出異常,ignore表示忽略。

newline

讀時(shí):缺省為None,表示'\r','\n','\r\n'均轉(zhuǎn)為'\n',‘’表示不換行,其它字符可為分行。

寫時(shí):缺省表示'\n'被替換為系統(tǒng)缺省行分隔符os.linesep,'\n'表示'\n'不替換,其它字符表示換行符會(huì)替換為指定字符。

closefd

關(guān)閉文件描敘符,True表示關(guān)閉它。False會(huì)在文件關(guān)閉后保留描敘符。fileobj.fileno()查看

文件指針

seek(offset, whence = 0)

offset為0時(shí)代表文本開頭,為1時(shí)代表當(dāng)前指針位置,為2時(shí)代表文件末端。

文本模式下offset只能時(shí)0的時(shí)候whence可以不為0,為正整數(shù),表示偏移多少字節(jié)。

二進(jìn)制模式下offset為0時(shí)whence為正整數(shù),表示便宜多少字節(jié),offset為1和2時(shí)可正可負(fù)。

read讀取

read(size=-1)

缺省-1表示指針?biāo)谖恢煤笕孔x取,填正數(shù)表示讀取指針位置后多少個(gè)字節(jié)。

行讀取

readline(size=-1)

缺省-1一行行讀取,填正數(shù)表示讀取行內(nèi)前幾個(gè)字節(jié)。

readlines()

按行讀取所有內(nèi)容,返回列表。

write寫

write(s),文本模式時(shí),從指針開始寫入s并返回寫入字節(jié)數(shù),二進(jìn)制時(shí)把bytes寫入并返回字節(jié)數(shù)。

writelines(lines),把字符串列表寫入文件。

close關(guān)閉

關(guān)閉文件。

其它

seekable():是否可seek

readable():是否可讀

writeable():是否可寫

closed:是否已關(guān)閉

1 f = open('test.txt', 'w+')2 f.write('HI\n')3 f.writelines(['Hello\n', 'a'])4 f.seek(0)5 print(f.readlines()) #['HI\n', 'Hello\n', 'a']

6 print(f.seekable()) #True

7 print(f.readable()) #True

8 print(f.writable()) #True

9 print(f.closed) #False

10 f.close()11 print(f.closed) #True

上寫文管理

文件打開用完后一定要關(guān)閉,不然系統(tǒng)會(huì)有進(jìn)程殘留,久了當(dāng)數(shù)量達(dá)到上限張不能再打開文件導(dǎo)致錯(cuò)誤。

with語(yǔ)句可以有效控制文件關(guān)閉。

1 with open('test') as f:2 print(f.closed) #False

3 print(f.closed) #True

StringIO和BytesIO

IO模塊中的類,在內(nèi)存中開辟一個(gè)處理文本或二進(jìn)制文本的空間,close后內(nèi)存釋放。

1 importio2 f =io.StringIO()3 f.write('HI') #HI

4 f.seek(0)5 print(f.read())6 b =io.BytesIO()7 b.write(b'a')8 b.seek(0)9 print(b.read()) #b'a'

file-like對(duì)象

類文件對(duì)象,可以像文件一樣操作。

1 importsys2 f =sys.stdout3 f.write('HI')4 f =sys.stderr5 f.write('Hello')6 #HelloHI

正則表達(dá)式

正則表達(dá)式修飾符 - 可選標(biāo)志

修飾符描述

re.I

使匹配對(duì)大小寫不敏感

re.L

做本地化識(shí)別(locale-aware)匹配

re.M

多行匹配,影響 ^ 和 $

re.S

使 . 匹配包括換行在內(nèi)的所有字符

re.U

根據(jù)Unicode字符集解析字符。這個(gè)標(biāo)志影響 \w, \W, \b, \B.

re.X

該標(biāo)志通過給予你更靈活的格式以便你將正則表達(dá)式寫得更易于理解。

正則表達(dá)式模式

模式描述

^

匹配字符串的開頭

$

匹配字符串的末尾。

.

匹配任意字符,除了換行符,當(dāng)re.DOTALL標(biāo)記被指定時(shí),則可以匹配包括換行符的任意字符。

[...]

用來表示一組字符,單獨(dú)列出:[amk] 匹配 'a','m'或'k'

[^...]

不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。

re*

匹配0個(gè)或多個(gè)的表達(dá)式。

re+

匹配1個(gè)或多個(gè)的表達(dá)式。

re?

匹配0個(gè)或1個(gè)由前面的正則表達(dá)式定義的片段,非貪婪方式

re{ n}

匹配n個(gè)前面表達(dá)式。例如,"o{2}"不能匹配"Bob"中的"o",但是能匹配"food"中的兩個(gè)o。

re{ n,}

精確匹配n個(gè)前面表達(dá)式。例如,"o{2,}"不能匹配"Bob"中的"o",但能匹配"foooood"中的所有o。"o{1,}"等價(jià)于"o+"。"o{0,}"則等價(jià)于"o*"。

re{ n, m}

匹配 n 到 m 次由前面的正則表達(dá)式定義的片段,貪婪方式

a| b

匹配a或b

(re)

G匹配括號(hào)內(nèi)的表達(dá)式,也表示一個(gè)組

(?imx)

正則表達(dá)式包含三種可選標(biāo)志:i, m, 或 x 。只影響括號(hào)中的區(qū)域。

(?-imx)

正則表達(dá)式關(guān)閉 i, m, 或 x 可選標(biāo)志。只影響括號(hào)中的區(qū)域。

(?: re)

類似 (...), 但是不表示一個(gè)組

(?imx: re)

在括號(hào)中使用i, m, 或 x 可選標(biāo)志

(?-imx: re)

在括號(hào)中不使用i, m, 或 x 可選標(biāo)志

(?#...)

注釋.

(?= re)

前向肯定界定符。如果所含正則表達(dá)式,以 ... 表示,在當(dāng)前位置成功匹配時(shí)成功,否則失敗。但一旦所含表達(dá)式已經(jīng)嘗試,匹配引擎根本沒有提高;模式的剩余部分還要嘗試界定符的右邊。

(?! re)

前向否定界定符。與肯定界定符相反;當(dāng)所含表達(dá)式不能在字符串當(dāng)前位置匹配時(shí)成功

(?> re)

匹配的獨(dú)立模式,省去回溯。

\w

匹配字母數(shù)字

\W

匹配非字母數(shù)字

\s

匹配任意空白字符,等價(jià)于 [\t\n\r\f].

\S

匹配任意非空字符

\d

匹配任意數(shù)字,等價(jià)于 [0-9].

\D

匹配任意非數(shù)字

\A

匹配字符串開始

\Z

匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串。c

\z

匹配字符串結(jié)束

\G

匹配最后匹配完成的位置。

\b

匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

\B

匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。

\n, \t, 等.

匹配一個(gè)換行符。匹配一個(gè)制表符。等

\1...\9

匹配第n個(gè)分組的子表達(dá)式。

\10

匹配第n個(gè)分組的子表達(dá)式,如果它經(jīng)匹配。否則指的是八進(jìn)制字符碼的表達(dá)式。

詳細(xì)正則表達(dá)式參考:https://www.w3cschool.cn/regex_rmjc/

路徑操作

from os import path模塊

1 from os importpath2 p = path.join('d:/', 'python', 'vn')3 print(p, type(p)) #d:\python\vn

4 print(path.exists(p)) #True 或 False 表示存在或不存在

5 print(path.split(p)) #('d:\\python', 'vn'),分割路徑

6 print(path.dirname(p), path.basename(p)) #d:\python vn 路徑和基名

7 print(path.abspath(''), path.abspath('.')) #絕對(duì)路徑

8 print(path.abspath(__file__)) #打印當(dāng)前文件路徑

9 print(path.splitdrive(p)) #('d:', '\\python\\vn'),windows方法

from pathlib import Path模塊

1 from pathlib importPath2 p = Path('.') #空白,'', '.'均為當(dāng)前目錄

3 print(Path('d:/', 'python/vn')) #d:\python\vn

4 print(Path('d:/', Path('python', 'vn'))) #d:\python\vn

5 p1 = 'vn' /p6 p2 = 'python' /p17 p3 = p1 /p28 print(p1, p2, p3) #vn python\vn vn\python\vn

9 print(p3.joinpath('a', 'b/c', Path('d/e'))) #vn\python\vn\a\b\c\d\e

10 print(p3.parts) #('vn', 'python', 'vn')

11 print(p3.parent) #vn\python

12 for i inp3.parents:13 print(i)14 #vn\python

15 #vn

16 #.

17 p = Path('/a/b/c/d/e.py')18 print(p.parent) #\a\b\c\d

19 print(p.name) #e.py

20 print(p.stem) #e

21 print(p.suffix) #.py

22 print(p.suffixes) #['.py']

23 print(p.with_name('f')) #\a\b\c\d\f

24 print(p.with_name('f').with_suffix('.txt')) #\a\b\c\d\f.txt

25 print(p.cwd()) #返回當(dāng)前工作目錄

26 print(p.home()) #返回當(dāng)前家目錄

27 print(p.exists()) #返回True或False,判斷目錄或文件是否存在

28 print(p.is_dir()) #返回True或False,判斷是否為目錄

29 print(p.is_file()) #返回True或False,判斷是否為文件

30 print(p.is_symlink()) #返回True或False,判斷是否為軟連接

31 print(p.is_socket()) #返回True或False,判斷是否為socket文件

32 print(p.is_block_device()) #返回True或False,判斷是否為塊設(shè)備

33 print(p.is_char_device()) #返回True或False,判斷是否為字符設(shè)備

34 print(p.is_absolute()) #返回True或False,判斷是否為絕對(duì)路徑

35 print(p.resolve()) #返回一個(gè)絕對(duì)路徑,如果是軟連接則直接被解析

36 print(p.absolute()) #獲取結(jié)對(duì)路徑

37 p = Path('d:/a/b')38 p.mkdir(parents=True, exist_ok=True) #創(chuàng)建目錄

39 p.rmdir() #刪除空目錄,目錄非空不能刪除,拋出異常

40 p.mkdir(parents=True, exist_ok=True) #創(chuàng)建目錄,parents為False時(shí)父目錄不存在拋出異常,exit_ok為False時(shí)路徑存在拋出異常

41 (p / 'c.py').touch() #創(chuàng)建文件

42 print(p.stat()) #獲取文件或目錄信息

43 print(p.lstat()) #獲取文件或目錄信息

44 print(p.as_uri()) #file:///d:/a/b,把路徑返回成URI

45 for i in Path('d:/').iterdir(): #迭代目錄里的文件和目錄

46 print(i)

通配符

glod(pattern)通配給定的模式,返回生成器對(duì)象

rglod(pattern)通配給定的模式,遞歸目錄,返回生成器對(duì)象

?代表一個(gè)字符

*代表任意個(gè)字符

[a-z]或[abc]代表一個(gè)字符

1 from pathlib importPath2 print(list(Path('d:/a/b').glob('c*'))) #返回c開頭的文件路徑列表

文件操作

1 from pathlib importPath2 p = Path('d:/a/b/c.py')3 p.write_text('a') #文檔模式寫入

4 p.write_bytes(b'a') #二進(jìn)制模式寫入

5 print(p.read_text()) #a,文本模式讀取

6 print(p.read_bytes()) #b'a',二進(jìn)制模式讀取

7 with Path('d:/a/b/c.txt').open() as f:8 print(f.read())

os模塊

操作系統(tǒng)平臺(tái)

1 from pathlib importPath2 importos3 print(os.name) #windows系統(tǒng)是nt,linux系統(tǒng)是linux

4 print(os.listdir(Path('d:/'))) #獲取目錄下文件和目錄信息

5 print(os.stat(Path('d:/a/b/c.py'))) #獲取文件信息

6 os.chmod(Path('d:/a/b/c.py'), 0o777) #修改權(quán)限

shutil模塊

高級(jí)文件操作庫(kù)

copy復(fù)制

1 from pathlib importPath2 importshutil3

4

5 defignore(src, names):6 print(src, names)7 ig = filter(lambda x: x.startswith('a'), names)8 print(list(ig))9 returnset(ig)10

11

12 a = Path('d:/a/b/a.txt') #原文件

13 b = Path('d:/a/b/b.txt')14 c = Path('d:/a/b/c.txt')15 d = Path('d:/a/b/d.txt')16 e = Path('d:/a/b/e.txt')17 with a.open() as aa:18 with b.open('w') as bb:19 shutil.copyfileobj(aa, bb) #復(fù)制內(nèi)容

20 shutil.copyfile(a, c) #復(fù)制內(nèi)容

21 shutil.copymode(a, c) #復(fù)制權(quán)限

22 shutil.copystat(a, c) #復(fù)制元數(shù)據(jù)和權(quán)限

23 shutil.copy(a, d) #復(fù)制內(nèi)容和權(quán)限和部分元數(shù)據(jù)

24 shutil.copy2(a, e) #復(fù)制內(nèi)容和權(quán)限和元數(shù)據(jù)

25 shutil.copytree(Path('d:/a/b/'), Path('d:/a/c/'), ignore=ignore) #復(fù)制目錄

26 #copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,ignore_dangling_symlinks=False)

27 #ignore接受一個(gè)函數(shù),函數(shù)接收兩個(gè)參數(shù)src和os.listdir(src),返回set,copytree張過濾set的內(nèi)容

rm刪除

1 from pathlib importPath2 importshutil3 shutil.rmtree(Path('d:/a/c')) #如同rm -rf一樣危險(xiǎn),慎用

move移動(dòng)

1 from pathlib importPath2 importshutil3 shutil.move(Path('d:/a/b'), Path('d:/a/c'))

壓縮

from pathlib importPathimportshutil

shutil.make_archive(Path('d:/a/z'), 'zip', Path('d:/a/c/')) #把目錄c里的文件和目錄壓縮成z.zip

總結(jié)

以上是生活随笔為你收集整理的python关闭对象语法_Python基础及语法(七)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。