1. 文件操作
path類
from pathlib import Path
path = Path("/usr/local/bin")
# 判斷路徑是否存在
path.exists()
# 判斷是否是文件
path.is_file()
#判斷是否是目錄
path.is_dir()
# 文件的絕對路徑
path.absolute()
path.name # 返回文件的名字
path.stem # 返回不帶擴展名的文件名
path.suffix # 返回文件的擴展名
path.parent # 返回文件的父母路
操作目錄
from pathlib import Path
path = Path("ecommerce")
path.iterdir() # 返回一個生成器對象
當(dāng)我們需要處理的文件很多的時候积暖,這樣就可以節(jié)省一下內(nèi)存空間
然后就可以遍歷這個生成器進行操作比如
paths = [p for p in path.iterdir()]
paths里面存的是一個列表,返回的是
因為我是mac操作系統(tǒng)孙咪,所以返回的是PosixPath對象堪唐,如果是Windows返回的就是WindowsPath
paths = [p for p in path.iterdir() if p.is_dir()]
這樣得到的就是只有目錄的文件夾
然而這樣的方法存在的問題就是沒法進行模糊搜索,和遞歸搜索翎蹈,所以接下來我們看一種新的方法
glob 傳入的參數(shù)是一個格式樣本 返回的也是一個生成器
py_files = [p for p in path.glob("*.py")]
遞歸搜索
py_files = [p for p in path.rglob("*.py")]
這樣我們得到的就是ecommerce目錄以及子目錄下面所有的py文件
文件操作
path = Path("ecommerce/__init__.py")
path.exists()
path.rename("init.txt") # 重命名
path.unlink() # 刪除
path.stat() # 返回文件的屬性信息
stat()的返回值
從文件中讀取數(shù)據(jù)
path.read_bytes() # 以字節(jié)形式讀取
path.read_text() # 返回字符串結(jié)果
path.write_text("...") # 寫文件
# 復(fù)制
source = Paht("ecommerce/__init__.py")
target = Path()/"__init.py"
target.write_text(source.read_text())
然而上面的復(fù)制方法有一些奇怪淮菠,我們還有更好的方法,let's go
有一個shutil或者shell utilities的類荤堪,專門針對膚質(zhì)移動文件的專屬方法
import shutil
source = Paht("ecommerce/__init__.py")
target = Path()/"__init.py"
shutil.copy(source, target)
這樣合陵,比起來用path對象就清楚多了
處理壓縮文件
from pathlib import Path
from zipfile import ZipFile
# 寫入
zip = ZipFile("files.zip", "w")
for path in Path("ecommerce").rglob("*.*"):
zip.write(path)
zip.close()
# 解壓
zip.extractall("里面?zhèn)魅胍鈮旱哪夸浢?)
csv文件處理
import csv
# 寫入csv文件
with open("data.csv", "w") as file:
writer = csv.writer(file)
# 寫入表頭
writer.writerow(["transaction_id", "product_id", "price_id"])
# 寫入數(shù)據(jù)
writer.writerow([1000, 1, 5])
# 讀取csv文件中的數(shù)據(jù)
with open("data.csv") as file:
reader = csv.reader(file) # 可遍歷
print(list(reader))
注意reader對象是有一個位置序號的,當(dāng)你第一次遍歷結(jié)束以后澄阳,他就到了文件末尾了
處理json文件
json作為一種很常用的數(shù)據(jù)接口,我們需要了解一些基本的用法
import json
from pathlib import Path
# json 文件格式
mivies = [
{"id": 1, "title":"hello world", :"year":1879},
{"id": 2, "title":"hello world22222", :"year":1879},
]
data = json.dumps(movies)
# 寫入文件
Path("movies.json").write_text(data)
# 讀取文件
data = Path("movies.json").read_text()
movies = json.loads(data)