Python內置庫:pathlib(文件路徑操作)

来源:https://www.cnblogs.com/guyuyun/p/18117563
-Advertisement-
Play Games

官方文檔: pathlib — Object-oriented filesystem paths 一、基礎使用 遍歷子目錄 使用通配符遍歷文件 拼接路徑 獲取標準化後的絕對路徑 查詢路徑常規屬性 打開文件 from pathlib import Path print('1.1 查詢指定目錄的子目錄' ...


官方文檔: pathlib — Object-oriented filesystem paths

一、基礎使用

  • 遍歷子目錄
  • 使用通配符遍歷文件
  • 拼接路徑
  • 獲取標準化後的絕對路徑
  • 查詢路徑常規屬性
  • 打開文件
from pathlib import Path

print('1.1 查詢指定目錄的子目錄')
p = Path('D:/Envs')
print([sub_p for sub_p in p.iterdir() if sub_p.is_dir()])

print('1.2 使用通配符查詢目錄中的某類文件')
p = Path('D:/Envs/flask_env/Scripts')
# glob的結果是一個生成器,需要使用list進行轉換
print(list(p.glob('*.bat')))

print('1.3 拼接路徑,以下三種方式都可以')
p = Path('D:/Envs')
p = p / 'flask_env'
print(p)
p = p.joinpath('Scripts')
print(p)
p = p.joinpath(Path('activate.bat'))
print(p)

print('1.4 獲取絕對路徑,會自動消除符號鏈接使之稱為一個標準化的路徑表示,Windows中,斜杠會被轉換為反斜杠')
p = Path('.')
print(p.resolve())

print('1.5 查詢路徑常規屬性')
p = Path('D:/Envs')
print(p.exists())
print(p.is_dir())
print(p.is_file())

print('1.6 打開文件,以下兩種方式都可以')
p = Path('./test.txt')
with open(p) as f:
    print(f.read())
with p.open() as f:
    print(f.read())
1.1 查詢指定目錄的子目錄
[WindowsPath('D:/Envs/django_env'), WindowsPath('D:/Envs/flask_env'), WindowsPath('D:/Envs/study')]

1.2 使用通配符查詢目錄中的某類文件
[WindowsPath('D:/Envs/flask_env/Scripts/activate.bat'), WindowsPath('D:/Envs/flask_env/Scripts/deactivate.bat')]

1.3 拼接路徑,以下三種方式都可以
D:\Envs\flask_env
D:\Envs\flask_env\Scripts
D:\Envs\flask_env\Scripts\activate.bat

1.4 獲取絕對路徑,會自動消除符號鏈接使之成為一個標準化的路徑表示,Windows中,斜杠會被轉換為反斜杠
D:\Projects\pathlib_test

1.5 查詢路徑常規屬性
True
True
False

1.6 打開文件,以下兩種方式都可以
This is a test file
This is a test file

二、Pure paths

Pure paths在不對文件系統進行實際操作的前提下,提供了各種操作路徑的方法。該模塊提供了三個類PurePath、PureWindowsPath、PurePosixPath,從名稱可以看出PureWindowsPath用於Windows系統,PurePosixPath用於非Windows系統,當然也可以直接使用基類PurePath,從類定義上看,PureWindowsPath和PurePosixPath只是在 _flavour 上提前定義好了操作系統類型,直接使用PurePath會根據 os.name 自動識別當前操作系統。

註: 本章節示例來自官方文檔pathlib — Object-oriented filesystem paths

2.1 初始化

初始化時可以傳入一個或多個參數,參數可以是路徑字元串,也可以是 pathlib.Path 對象,若沒有傳入任何參數,則預設為當前目錄。

>>> PurePath('setup.py')      # Running on a Unix machine
PurePosixPath('setup.py')
>>> PurePath('foo', 'some/path', 'bar')
PurePosixPath('foo/some/path/bar')
>>> PurePath(Path('foo'), Path('bar'))
PurePosixPath('foo/bar')
>>> PurePath()
PurePosixPath('.')

路徑中間的 //. 會被自動優化。

>>> PurePath('foo//bar')
PurePosixPath('foo/bar')
>>> PurePath('//foo/bar')
PurePosixPath('//foo/bar')
>>> PurePath('foo/./bar')
PurePosixPath('foo/bar')
>>> PurePath('foo/../bar')
PurePosixPath('foo/../bar')

2.2 通用屬性

一個 PurePath 或 其子類,都可以直接用在任何實現了 os.PathLike 介面的地方,並且如果想要 PurePath 對象代表的路徑的字元串值,直接使用str即可。

>>> import os
>>> p = PurePath('/etc')
>>> os.fspath(p)
'/etc'
>>> p = PurePath('/etc')
>>> str(p)
'/etc'
>>> bytes(p)
b'/etc'
>>> p = PureWindowsPath('c:/Program Files')
>>> str(p)
'c:\\Program Files'

parts 屬性提供了根據路徑分隔符分隔的元組。

>>> p = PurePath('/usr/bin/python3')
>>> p.parts
('/', 'usr', 'bin', 'python3')
>>> p = PureWindowsPath('c:/Program Files/PSF')
>>> p.parts
('c:\\', 'Program Files', 'PSF')

2.3 其他方法和屬性

PurePath.drive

獲取路徑中的盤符(如果有),否則返回空字元串。

PurePath.anchor

PurePath.drivePurePath.root 的結合。

>>> PureWindowsPath('c:/Program Files/').anchor
'c:\\'
>>> PureWindowsPath('c:Program Files/').anchor
'c:'
>>> PurePosixPath('/etc').anchor
'/'
>>> PureWindowsPath('//host/share').anchor  # UNC shares
'\\\\host\\share\\'

PurePath.parents

返回一個存儲了各個祖先節點的不可變序列。在 Python 3.10 開始,支持對其切片以及使用負向索引。

>>> p = PureWindowsPath('c:/foo/bar/setup.py')
>>> p.parents[0]
PureWindowsPath('c:/foo/bar')
>>> p.parents[1]
PureWindowsPath('c:/foo')
>>> p.parents[2]
PureWindowsPath('c:/')

PurePath.parent

返回上一級路徑。註意,這個方法只是個“字元串上的切割”,不會查詢實際的路徑。

>>> p = PurePosixPath('/a/b/c/d')
>>> p.parent
PurePosixPath('/a/b/c')
>>> p = PurePosixPath('foo/..')  # 如果想要實際的路徑信息,可以使用Path對象,先調用Path.resolve()獲取絕對路徑
>>> p.parent
PurePosixPath('foo')

PurePath.name

按路徑分割後,返回最後一級名稱(會自動去除盤符 drive 和根路徑符 root )。

PurePosixPath('my/library/setup.py').name
'setup.py'

PurePath.suffix

返迴路徑中的文件名尾碼(如果有),如 .py

PurePath.suffixes

返迴路徑中最後一級的文件名尾碼列表(如果有),如“library.tar.gz”的suffixes值為 ['.tar', '.gz']

PurePath.stem

返迴路徑中最後一級的文件名(不含尾碼 PurePath.suffix ),如“library.tar.gz”的stem值為 library.tar

PurePath.as_posix()

返回以斜杠表示的路徑。

PurePath.is_absolute()

是否為絕對路徑。

PurePath.joinpath(*pathsegments)

拼接路徑,可以傳入一個或多個字元串或Path對象。

PurePath.match(pattern, *, case_sensitive=None)

判斷路徑是否符合指定通配符模式。 case_sensitive 參數( Python 3.12 增加)在Windows系統預設為False,其他系統預設為True。如果 pattern 也是PurePath對象,此方法匹配效率會更高。

>>> PurePath('a/b.py').match('*.py')
True
>>> PurePath('/a/b/c.py').match('b/*.py')
True
>>> PurePath('/a/b/c.py').match('a/*.py')
False
>>> pattern = PurePath('*.py')
>>> PurePath('a/b.py').match(pattern)
True

PurePath.with_name(name)

使用指定的name替換原有的name,如果原路徑就沒有name,則拋出異常。

>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_name('setup.py')
PureWindowsPath('c:/Downloads/setup.py')
>>> p = PureWindowsPath('c:/')
>>> p.with_name('setup.py')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/antoine/cpython/default/Lib/pathlib.py", line 751, in with_name
    raise ValueError("%r has an empty name" % (self,))
ValueError: PureWindowsPath('c:/') has an empty name

PurePath.with_stem(stem)

使用指定的stem替換原有的stem,如果原路徑就沒有stem,則拋出異常。

>>> p = PureWindowsPath('c:/Downloads/draft.txt')
>>> p.with_stem('final')
PureWindowsPath('c:/Downloads/final.txt')
>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_stem('lib')
PureWindowsPath('c:/Downloads/lib.gz')
>>> p = PureWindowsPath('c:/')
>>> p.with_stem('')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/antoine/cpython/default/Lib/pathlib.py", line 861, in with_stem
    return self.with_name(stem + self.suffix)
  File "/home/antoine/cpython/default/Lib/pathlib.py", line 851, in with_name
    raise ValueError("%r has an empty name" % (self,))
ValueError: PureWindowsPath('c:/') has an empty name

PurePath.with_suffix(suffix)

使用指定的尾碼(可以是空字元串)替換原有的尾碼,如果原路徑沒有尾碼,則會將尾碼添加到原路徑中。

>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_suffix('.bz2')
PureWindowsPath('c:/Downloads/pathlib.tar.bz2')
>>> p = PureWindowsPath('README')
>>> p.with_suffix('.txt')
PureWindowsPath('README.txt')
>>> p = PureWindowsPath('README.txt')
>>> p.with_suffix('')
PureWindowsPath('README')

三、path實體

path實體也提供了三個類Path(基類)、PosixPath、WindowsPath,Path繼承自PurePath,所以PurePath支持的操作,path實體的三個類也是支持的。path實體與pure path區別在於,path實體對象支持系統操作,如獲取絕對路徑、遍歷目錄的所有子目錄和文件、打開文件等,所以需要特別註意,在使用Path類時,可能會因為系統不支持導致拋出OSError等異常。

註: 本章節部分示例來自官方文檔pathlib — Object-oriented filesystem paths

3.1 常用方法

Path.cwd()

返回當前路徑,同 os.getcwd()

Path.home()

返回當前用戶的home目錄,同 os.path.expanduser()

Path.stat(*, follow_symlinks=True)

獲取路徑詳細信息,同 os.stat()follow_symlinks 參數在 Python 3.10 開始添加。

>>> p = Path('setup.py')
>>> p.stat().st_size
956
>>> p.stat().st_mtime
1327883547.852554

Path.chmod(mode, *, follow_symlinks=True)

修改文件許可權,同 os.chmod()follow_symlinks 參數在 Python 3.10 添加。

>>> p = Path('setup.py')
>>> p.stat().st_mode
33277
>>> p.chmod(0o444)
>>> p.stat().st_mode
33060

Path.exists(*, follow_symlinks=True)

檢查路徑是否存在。 follow_symlinks 參數在 Python 3.12 添加。

Path.expanduser()

返回填充了home目錄的路徑。該方法在 Python 3.5 添加。

>>> p = PosixPath('~/films/Monty Python')
>>> p.expanduser()
PosixPath('/home/eric/films/Monty Python')

Path.glob(pattern, *, case_sensitive=None)

使用通配符遍歷當前路徑下的所有目錄和文件。 case_sensitivePython 3.12 添加)預設為None,即使用當前系統的大小寫規則,也可手動指定。當 pattern 以路徑分隔符結尾,則只會列出目錄,不會列出文件(該特性在 Python 3.11 添加)。

>>> sorted(Path('.').glob('*.py'))
[PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')]
>>> sorted(Path('.').glob('*/*.py'))
[PosixPath('docs/conf.py')]
>>> sorted(Path('.').glob('**/*.py'))
[PosixPath('build/lib/pathlib.py'),
 PosixPath('docs/conf.py'),
 PosixPath('pathlib.py'),
 PosixPath('setup.py'),
 PosixPath('test_pathlib.py')]

Path.group()

返迴路徑的屬組。

Path.is_dir()

檢查路徑是否是目錄。

Path.is_file()

檢查路徑是否是文件。

Path.is_junction()

檢查路徑是否是junction快捷方式(Windows系統專用)。

Path.is_mount()

判斷路徑是否是一個掛載點(該方法在 Python 3.7 添加,在 Python 3.12 支持Windows系統)。

Path.is_symlink()

判斷路徑是否是符號鏈接,如果路徑不存在也會返回False。

Path.is_socket()

檢查路徑是否指向Unix socket文件,如果路徑不存在也會返回False。

Path.is_fifo()

檢查路徑是否指向FIFO存儲,如果路徑不存在也會返回False。

Path.is_block_device()

檢查路徑是否指向塊設備,如果路徑不存在也會返回False。

Path.is_char_device()

檢查路徑是否指字元設備,如果路徑不存在也會返回False。

Path.iterdir()

以生成器的方式遍歷路徑下的所有目錄和文件。

Path.walk(top_down=True, on_error=None, follow_symlinks=False)

該方法在 Python 3.12 添加。遞歸遍歷指定路徑下的所有目錄和文件,使用時由生成器每次生成一個三元組(當前遍歷目錄,子目錄名列表,子文件名列表),想要使用某個子目錄或子文件時,其全路徑為“當前遍歷目錄+目錄名/文件名”。

  • top_down 預設為True,即從上到下遍歷,為False時表示從下到上遍歷,“上下”的區別就是從當前目錄的子目錄開始往最里一層一層遍歷遍歷,還是從最深的子目錄往外一層一層遍歷。
  • on_error 預設為None,即忽略walk過程中的異常,也可手動指定一個可調用對象來處理異常,該對象的要求是接受發生的異常(OSError對象)。
  • follow_symlinks 預設為False,即在walk時,不會自動跟蹤鏈接到真實的路徑,列出的結果就是鏈接本身(該操作區別於 os.walk() )。

示例:有路徑結構如下

test1
  - test2
    - test2.txt
  - test1.txt
>>> import pathlib
>>> p = pathlib.Path('Z:\\Projects\\Daily Test\\pathlib_test\\test1')
>>> for root, dirnames, filenames in p.walk():
        print(root)
        print(dirnames)
        print(filenames)

    
    Z:\Projects\Daily Test\pathlib_test\test1
    ['test2']
    ['test1.txt']
    Z:\Projects\Daily Test\pathlib_test\test1\test2
    []
    ['test2.txt']
>>> 
>>> for root, dirnames, filenames in p.walk(top_down=False):
        print(root)
        print(dirnames)
        print(filenames)

    
    Z:\Projects\Daily Test\pathlib_test\test1\test2
    []
    ['test2.txt']
    Z:\Projects\Daily Test\pathlib_test\test1
    ['test2']
    ['test1.txt']

Path.lchmod(mode)

類似 Path.chmod() ,修改文件許可權,區別在於,如果路徑是一個鏈接,則只會修改鏈接本身,而鏈接指向的對象不會被修改。

Path.lstat()

類似 Path.stat() ,修改文件屬性,區別在於,如果路徑是一個鏈接,則只會修改鏈接本身,而鏈接指向的對象不會被修改。

Path.mkdir(mode=0o777, parents=False, exist_ok=False)

創建目錄。 parents 預設False,表示路徑中的某個父目錄不存在則會拋錯, exist_ok 預設為False(該參數在 Python 3.5 添加),表示創建的路徑已經存在則會拋錯,這兩個參數的行為與POSIX系統中的 mkdir -p 命令執行一致。

Path.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None)

打開文件,同內置的open函數。

Path.owner()

返迴路徑的屬主。

Path.read_bytes()

以byte類型返迴文件的二進位內容。(該方法在 Python 3.5 添加)

Path.read_text(encoding=None, errors=None)

返回解碼後的文件文本內容。文件打開後會立即關閉,參數的行為與內置的open函數相同。(該方法在 Python 3.5 添加)

Path.readlink()

返回鏈接指向的真實文件的路徑,同 os.readlink() 。(該方法在 Python 3.9 添加)

Path.rename(target)

重命名文件或目錄,並返回新的路徑對象(返回值在 Python 3.8 添加)。在Unix是上靜默修改,在Windows上則會修改失敗。同 os.rename()

Path.replace(target)

替換一個已有的文件或目錄,並返回新的路徑對象(返回值在 Python 3.8 添加),如果待替換的路徑為已存在的文件或空目錄,則會強制替換。

Path.absolute()

返回絕對路徑,但不會自動標準化路徑,也不會自動解析符號鏈接。

Path.resolve(strict=False)

返回Path對象的絕對路徑,會自動消除符號鏈接、“.”、“..”等格式的路徑。當 strict=True 且文件路徑不存在時,則拋出異常。(該參數在 Python 3.6 添加,在這之前版本預設為True)

>>> p = Path()
>>> p
PosixPath('.')
>>> p.resolve()
PosixPath('/home/antoine/pathlib')
>>> p = Path('docs/../setup.py')
>>> p.resolve()
PosixPath('/home/antoine/pathlib/setup.py')

Path.rglob(pattern, *, case_sensitive=None)

按照給定通配符模式遞歸遍歷子目錄及文件。 pattern 參數若以路徑分隔符結尾,則只遍歷所有子目錄,不會遍歷文件(該規則在 Python 3.11 添加)。 case_sensitive 預設為None,即跟隨系統大小寫規則。(該參數在 Python 3.12 添加)。

Path.rmdir()

移除指定空目錄(非空目錄無法移除)。

Path.samefile(other_path)

判斷兩個文件是否相等, other_path 可以是Path對象,也可以是字元串。(該方法在 Python 3.5 添加)

Path.symlink_to(target, target_is_directory=False)

使當前Path對象成為一個符號鏈接,並指向 target 所表示的文件。 target_is_directory 參數在非Windows系統上會被忽略,不生效。

Path.hardlink_to(target)

使當前Path對象成為一個硬鏈接,並指向 target 所表示的文件。

Path.touch(mode=0o666, exist_ok=True)

創建一個路徑,如果 exist_ok=False 且路徑已經存在,則會拋出異常。

Path.unlink(missing_ok=False)

移除文件或符號鏈接。如果此Path對象指向的是目錄,請使用 Path.rmdir()missing_ok 預設為False,即路徑不存在時拋出異常,反之則忽略異常。(該參數在 Python 3.8 添加)

Path.write_bytes(data)

以位元組模式打開文件並寫入位元組數據,寫入完成自動關閉文件。

Path.write_text(data, encoding=None, errors=None, newline=None)

以文本模式打開文件並寫入文本數據,同內置的open函數。(該方法在 Python 3.5 添加, newline 參數在 Python 3.10 添加)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡介 waynboot-mall 是一套全部開源的 H5 商城項目,包含運營後臺、H5 商城前臺和後端介面三個項目 。實現了一套完整的商城業務,有首頁展示、商品分類、商品詳情、sku 詳情、商品搜索、加入購物車、結算下單、支付寶/微信支付/易支付對接、我的訂單列表、商品評論等一系列功能 。 ...
  • 主要用於去除圖片的白邊和黑邊,比如在截圖表情包的時候,通過小米的傳送門保存圖片的時候,圖片往往會有黑邊和白邊,此時使用此腳本二次處理 import os from PIL import Image, ImageChops def trim_white_border(image): bg = Imag ...
  • novel —— 一套基於 Spring Boot3 + Vue3 開發的前後端分離學習型小說項目。由小說門戶系統、作家後臺管理系統、平臺後臺管理系統等多個子系統構成。 ...
  • 1. Spring 對於事務上的應用的詳細說明 @目錄1. Spring 對於事務上的應用的詳細說明每博一文案2. 事務概述3. 引入事務場景3.1 第一步:準備資料庫表3.2 第二步:創建包結構3.3 第三步:準備對應資料庫映射的 Bean 類3.4 第四步:編寫持久層3.5 第五步:編寫業務層3 ...
  • APCu 極簡概括: PHP 的開源記憶體緩存擴展,類比Redis,但是一般都用Redis,所以APCu用的很少。 官方文檔:https://www.php.net/manual/zh/apcu.configuration.php 解決問題:類比Redis做緩存組件,提升性能,同步數據使用。 適用場景 ...
  • nginx 系列 Nginx-01-聊一聊 nginx Nginx-01-Nginx 是什麼 Nginx-02-為什麼使用 Nginx Nginx-02-Nginx Ubuntu 安裝 + windows10 + WSL ubuntu 安裝 nginx 實戰筆記 Nginx-02-基本使用 Ngin ...
  • 一、選擇GO的原因 作為一個後端開發,日常工作中接觸最多的兩門語言就是PHP和GO了。無可否認,PHP確實是最好的語言(手動狗頭哈哈),寫起來真的很舒爽,沒有任何心智負擔,字元串和整型壓根就不用區分,開發速度真的是比GO快很多。現在工作中也還是有一些老項目在使用PHP,但21年之後的新項目基本上就都 ...
  • 0 前言 除非你一直生活在岩石下麵,否則你可能已經知道微服務是當今流行的架構趨勢。與這一趨勢一同成長,Segment早期就採用了這種最佳實踐,這在某些情況下對我們很有幫助,但正如你將很快瞭解到的,在其他情況下則並非如此。 簡單來說,微服務是一種面向服務的軟體架構,其中伺服器端應用程式通過組合許多單一 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...