Python学习week7-文件路径操作
1、os.path模塊
# os.path常用方法
from os import path p=path.join('/etc','sysconfig','network') # 路徑拼接 print(type(p),p) print(path.exists(p)) # 判斷路徑是否存在print(path.split(p)) # 將路徑切割為2部分,head,tailprint(path.abspath('.')) # 當(dāng)前路徑的絕對(duì)路徑 p=path.join('o:/',p,'test.txt') print(p) # o:/etc\sysconfig\network\test.txt print(path.dirname(p)) # o:/etc\sysconfig\network print(path.basename(p)) # test.txt p1=path.abspath(__file__) while p1 != path.dirname(p1):p1=path.dirname(p1)print(p1,path.basename(p1))''' 運(yùn)行結(jié)果: F:\study-python\com.lx.study\week7 week7 F:\study-python\com.lx.study com.lx.study F:\study-python study-python F:\ '''2、pathlib模塊
# python3.4版本引入pathlib模塊,提供Path對(duì)象來操作,包括目錄和文件;
# 模塊導(dǎo)入: from pathlib import Path
2.1、目錄操作
2.1.1、初始化
# 初始化操作:
p=Path() # 創(chuàng)建當(dāng)前目錄對(duì)象 ==> “.” p=Path('a','b','c/d') # 當(dāng)前目錄下的a/b/c/d 對(duì)象 ==> a/b/c/d p=Path('/etc') # 根下/etc目錄對(duì)象 ==> /ect2.1.2、路徑的拼接與分解
(1) 拼接操作符:/
# 操作方法:
Path對(duì)象 / Path對(duì)象;
Path對(duì)象 / 字符串 或者 字符串/Path對(duì)象;
# 拼接出來的一定是一個(gè)Path對(duì)象
(2)分解
# Path對(duì)象的parts屬性,以元祖的形式返回Path對(duì)象中的每一個(gè)部分;
p=Path('/etc') # 根下/etc目錄對(duì)象 p=p / 'a' /'c' # Path 對(duì)象拼接print(p) # ==> \etc\a\cprint(p.parts) # ('\\', 'etc', 'a', 'c')(3)joinpath
# joinpath(*other) 連接多個(gè)字符串到Path對(duì)象中,返回一個(gè)新的路徑對(duì)象
p = Path() print((p/'a').absolute()) # F:\study-python\com.lx.study\week7\a p1=p/'a' print(p1.absolute())p = p / 'a' # a print(0,p.absolute()) print(1,p) p1 = 'b' / p # b/a print(2,p1) p2 = Path('c') # c print(3,p2) p3= p2 /p1 # c / b /a print(4,p3)print(p3.parts) pt=p3.joinpath('etc','init.d',Path('httpd'))print(5,p3) # p3 ==> c\b\a print(6,pt) # pt ==> c\b\a\etc\init.d\httpd2.1.3、獲取路徑
# str方法可以將Path對(duì)象轉(zhuǎn)換為字符串對(duì)象,bytes獲取路徑字符串的bytes;
p=Path('/etc') print(str(p)) # \etc print(bytes(p)) # b'\\etc'2.1.4、父目錄
# p.parent:表示p對(duì)象的父目錄,p.parents:為整個(gè)目錄對(duì)象的存儲(chǔ)元祖
p=Path('a/b/c/d')print(p.parent) # ==> a\b\c print(p.parent.parent) # ==> a\bprint(p.parts) # 父目錄元祖 ('a', 'b', 'c', 'd')for x in p.parts:print(x) ''' a b c d '''2.1.5、目錄組成部分
# 目錄的組成:name、stem、suffix、suffixes、with_suffix(suffix)、with_name(name)
①:name 目錄的最后一部分;
②:suffix 目錄中最后一個(gè)部分的擴(kuò)展名;
③:stem 目錄最后一個(gè)部分,沒有后綴;
④:suffixes 返回對(duì)個(gè)擴(kuò)展名列表;
⑤:with_suffix(suffix) 有擴(kuò)展名則替換,無則補(bǔ)充擴(kuò)展名;
⑥:with_name(name) 替換目錄最后一部分并返回一個(gè)新的路徑;
p=Path('/etc/mysqlinstall/mysql.tar.gz')print(p.name) # ==>mysql.tar.gz print(p.suffix) # ==> .gz print(p.suffixes) # ==> '.tar', '.gz'] print(p.stem) # mysql.tarprint(p.with_name('mysql-5.tgz')) # ==> \etc\mysqlinstall\mysql-5.tgzprint(p.with_suffix('.png')) # ==> \etc\mysqlinstall\mysql.tar.png p=Path('README.py') # ==> README.py print(p.with_suffix('.txt')) # ==> README.txt2.1.6、其他用法
''' 全局方法: cwd() 返回當(dāng)前工作目錄 home() 返回當(dāng)前家目錄判斷方法: is_dir() 判斷是否為目錄 is_file() 判斷是否為文件 is_symlink() 判斷是否為軟鏈接 is_socket() # 判斷是否為socket連接 is_block_device() # 是否為塊設(shè)備 is_char_device() # 是否為字符設(shè)備 is_absolute() # 是否為絕對(duì)路徑 resolve() # 返回一個(gè)新路徑,這個(gè)路徑就是擋墻Path對(duì)象的絕對(duì)路徑,如果是軟鏈接則直接解析; absolute() # 獲取絕對(duì)路徑 exists() # 目錄或文件是否存在 rmdir() # 刪除空目錄,沒有提供判斷是否為空目錄的方法; touch(mode=0o666,exist_ok=True) # 創(chuàng)建一個(gè)文件 as_uri() 將路徑返回成URI,例如:file:///etc/passwdp=Path('a.txt')
url=p.absolute().as_uri()
print(url)
==> file:///F:/study-python/com.lx.study/week7/a.txt
mkdir(mode=0o777,parents=False,exist_ok=False) # parents,是否創(chuàng)建父目錄,True等同于mkdir -p; False時(shí),父目錄不存在,則拋出FileNotFountError # exist_ok參數(shù),False時(shí),路徑已經(jīng)存在則拋出FileExistsError;True則異常被忽略;'''p=Path('a.txt')p.touch()p1=Path('a/b/c')print(p1.absolute())p1.mkdir(mode=0o777,parents=True,exist_ok=False) # ==> 在當(dāng)前目錄下創(chuàng)建了a/b/c目錄
# iterdir() 迭代當(dāng)前目錄:
p=Path(r'F:\study-python\com.lx.study\week7')list=[i for i in p.iterdir()]for i in list:print(i)''' F:\study-python\com.lx.study\week7\a F:\study-python\com.lx.study\week7\a.txt F:\study-python\com.lx.study\week7\t7file.py '''# 通配符
glob(pattern)? 通配給定的模式;
rglob(pattern) 通配給定的模式,遞歸目錄;
print(list(p.glob('*.py'))) # 返回當(dāng)前目錄對(duì)象下以py結(jié)尾的文件 ''' ==>[WindowsPath('F:/study-python/com.lx.study/week7/t7file.py')] '''g=p.rglob('*.txt') # 遞歸查找txt結(jié)尾的文件的生成器對(duì)象for i in g:print(i)''' F:\study-python\com.lx.study\week7\a.txt F:\study-python\com.lx.study\week7\a\b\c\d\readme.txt# 匹配 match(pattern)
模式匹配,成功返回True
# stat() 相當(dāng)于linuxstat命令;
2.2、文件操作
# open(self, mode='r', buffering=-1, encoding=None,errors=None, newline=None):
使用方法類似內(nèi)建函數(shù)open,返回一個(gè)文件對(duì)象:
p=Path(r'F:\study-python\com.lx.study\week7\a.txt')print(p.match('*.txt'))with p.open(encoding='utf-8') as f:print(f.readline())# read_bytes() 以rb模式讀取文件,并返回bytes類型
# Path.write_bytes(data) 以wb模式寫入數(shù)據(jù)到文件
# read_text(encoding=None,errors=None) 以rt模式讀取文件,返回文本;
# write_text(data,encoding=None,errors=None) 以wt模式寫入字符串到文件;
?
轉(zhuǎn)載于:https://www.cnblogs.com/soulgou123/p/9818779.html
總結(jié)
以上是生活随笔為你收集整理的Python学习week7-文件路径操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 链特异性转录组测序
- 下一篇: 461在全志r16平台tinav3.0系