python模塊百科_操作系統接口_os【一】

python模塊百科_操作系統接口_os【一】

  • `os` --- 多種操作系統接口
  • 一、相關模塊
    • 1.1 os.path 文件路徑
    • 1.2 fileinput 文件讀取
    • 1.3 tempfile 臨時文件和目錄
    • 1.4 shutil 高級文件和目錄
    • 1.5 platform 操作系統底層模塊
  • 二、關于函數適用性的說明
    • 2.1 與操作系統相同的接口
    • 2.2 支持字節串和字符串
    • 2.3 exception OSError
  • 三、文件名,命令行參數,以及環境變量
  • 四 文件系統編碼格式與錯誤處理句柄
  • 五、locale encoding -- 語言區域編碼格式
  • 六、Python UTF-8 模式

os — 多種操作系統接口

源代碼: Lib/os.py


??os 模塊提供了與操作系統交互的多種功能。可以使用 os 模塊來執行文件或目錄操作,如讀取或修改環境變量、訪問命令行參數、處理文件路徑、執行系統命令等。

一、相關模塊

1.1 os.path 文件路徑

??os.path 模塊提供了許多用于處理文件和目錄路徑的功能,包含了跨平臺的、對路徑名進行操作的功能。

以下是 os.path 模塊中一些常用的函數:

  1. os.path.abspath(path)
    返回指定文件或目錄的絕對路徑。

  2. os.path.basename(path)
    返回指定文件或目錄路徑的最后一個組成部分,相當于 os.path.split(path)[1]

  3. os.path.commonprefix(lists)
    返回列表中所有路徑名共有的最長公共前綴。

  4. os.path.dirname(path)
    返回指定文件或目錄路徑的目錄名稱,相當于 os.path.split(path)[0]

  5. os.path.exists(path)
    如果路徑存在則返回 True,否則返回 False

  6. os.path.expanduser(path)
    如果路徑名以 ~ 開頭,則將其替換為當前用戶的主目錄。

  7. os.path.expandvars(path)
    擴展路徑中的環境變量,如 $HOME

  8. os.path.getatime(path)
    返回文件最后訪問時間的時間戳。

  9. os.path.getmtime(path)
    返回文件最后修改時間的時間戳。

  10. os.path.getsize(path)
    返回文件的大小(以字節為單位)。

  11. os.path.isabs(path)
    如果路徑是絕對路徑,則返回 True,否則返回 False

  12. os.path.isfile(path)
    如果路徑指向一個存在的文件,則返回 True,否則返回 False

  13. os.path.isdir(path)
    如果路徑指向一個存在的目錄,則返回 True,否則返回 False

  14. os.path.islink(path)
    如果路徑指向一個符號鏈接,則返回 True,否則返回 False

  15. os.path.ismount(path)
    如果路徑指向一個掛載點(如 UNIX 中的掛載文件系統點),則返回 True,否則返回 False

  16. os.path.join(path1, path2, …)
    連接一個或多個路徑組件。

  17. os.path.lexists(path)
    如果路徑存在(無論它是文件還是目錄),則返回 True,否則返回 False

  18. os.path.normcase(path)
    將路徑名轉換為適當的規范形式。

  19. os.path.normpath(path)
    規范化路徑,例如解析 ...

  20. os.path.realpath(path)
    返回指定文件或目錄的絕對路徑,解析所有符號鏈接。

  21. os.path.relpath(path, start=None)
    返回從 startpath 的相對路徑。

  22. os.path.samefile(path1, path2)
    如果 path1path2 指向同一文件或目錄,則返回 True,否則返回 False

  23. os.path.sameopenfile(fp1, fp2)
    如果兩個文件描述符 fp1fp2 指向同一文件,則返回 True,否則返回 False

  24. os.path.samestat(stat1, stat2)
    如果兩個 stat 對象(通常是通過 os.stat() 獲取的)代表同一文件,則返回 True,否則返回 False

  25. os.path.split(path)
    將路徑分割為目錄和文件名,并返回元組 (dir, file)

  26. os.path.splitext(path)
    分割路徑為文件名和擴展名,并返回元組 (filename, extension)

1.2 fileinput 文件讀取

??fileinput 允許你輕松地迭代多個輸入流(通常是文件),而無需顯式地打開和關閉它們。這對于從命令行讀取多個文件特別有用,尤其是當你想使用相同的代碼邏輯處理多個文件時。

??以下是使用 fileinput 模塊的基本示例:

import fileinput# 處理單個文件
for line in fileinput.input('example.txt'):print(line, end='')# 處理多個文件   
for line in fileinput.input(['file1.txt', 'file2.txt']):print(line, end='') # 命令行輸入
for line in fileinput.input():print(line, end='')

fileinput 模塊還提供了以下函數:

  • fileinput.filename(): 返回當前正在讀取的文件的名稱。
  • fileinput.lineno(): 返回當前正在讀取的行的行號。
  • fileinput.filelineno(): 返回當前正在讀取的行在其文件內的行號。
  • fileinput.isfirstline(): 如果當前行是文件的第一行,則返回 True。
  • fileinput.isstdin(): 如果當前行來自標準輸入(即命令行),則返回 True。

1.3 tempfile 臨時文件和目錄

??tempfile 模塊在 Python 中用于創建臨時文件和目錄。它提供了一種安全、跨平臺的方式來處理臨時文件,這些文件在程序結束時通常會被自動刪除。tempfile 模塊中的這些函數和類使得處理臨時文件和目錄變得簡單和安全,尤其是在需要處理敏感數據或避免文件泄露的情況下。

以下是 tempfile 模塊中一些常用的函數:

  1. tempfile.TemporaryFile([mode=‘w+b’, buffering=-1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True])
    創建一個臨時文件,并返回一個文件對象。如果 delete 參數為 True(默認值),則文件會在關閉后自動刪除。

  2. tempfile.NamedTemporaryFile([mode=‘w+b’, buffering=-1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True])
    類似于 TemporaryFile,但返回一個文件對象,并且該文件有一個確定的文件名,可以通過文件對象的 name 屬性來訪問。

  3. tempfile.TemporaryDirectory([suffix=None, prefix=None, dir=None])
    創建一個臨時目錄,并返回一個 TemporaryDirectory 對象。當對象被銷毀時,目錄及其內容會被自動刪除。

  4. tempfile.mkstemp([suffix, prefix, dir, text])
    生成一個唯一的臨時文件名,但不創建文件。返回文件描述符和文件路徑。

  5. tempfile.mkdtemp([suffix, prefix, dir])
    生成一個唯一的臨時目錄名,并創建該目錄。返回目錄路徑。

  6. tempfile.gettempdir()
    返回用于創建臨時文件和目錄的默認目錄。

  7. tempfile.gettempprefix()
    返回用于生成臨時文件名和目錄名的默認前綴。

  8. tempfile.tempfile.tempdir
    這是一個變量,可以設置或獲取用于創建臨時文件和目錄的默認目錄。

以下是 tempfile 模塊的函數示例:

import tempfile# 創建一個臨時文件
with tempfile.TemporaryFile() as tmp:tmp.write(b'Hello, world!')tmp.seek(0)print(tmp.read())# 創建一個有名字的臨時文件
with tempfile.NamedTemporaryFile(delete=False) as tmp:tmp.write(b'Hello, named temp file!')tmp.seek(0)print(tmp.read())# 文件不會被自動刪除,因為它是在 delete=False 下創建的# 你可以通過 tmp.name 訪問其文件名# 創建一個臨時目錄
with tempfile.TemporaryDirectory() as tmpdir:print(f"Created temporary directory: {tmpdir}")# 在這個 with 塊內,tmpdir 存在# 當 with 塊結束時,tmpdir 和其內容會被自動刪除# 生成一個唯一的臨時文件名,但不創建文件
fd, path = tempfile.mkstemp()
print(f"Unique temporary file name: {path}")
# 需要自己關閉文件描述符
os.close(fd)# 生成一個唯一的臨時目錄名,并創建該目錄
path = tempfile.mkdtemp()
print(f"Unique temporary directory: {path}")
# 需要自己手動刪除目錄
os.rmdir(path)

1.4 shutil 高級文件和目錄

??shutil 提供了高級的文件、文件夾和文件流操作,使得文件和文件夾的操作更加便捷。當需要執行比簡單的文件讀寫更復雜的操作時,通常會使用 shutilshutil 是 “shell utilities” 的縮寫,意味著它提供了一些類似于 Unix shell 命令的功能。

以下是一些 shutil 模塊中常用的函數:

  1. shutil.copy(src, dst)
    復制文件從 srcdst

  2. shutil.copy2(src, dst)
    復制文件,并嘗試保留文件的元數據(如修改時間、訪問權限等)。

  3. shutil.copytree(src, dst, symlinks=False, ignore=None)
    遞歸地復制整個文件夾及其內容。

  4. shutil.rmtree(path, ignore_errors=False, οnerrοr=None)
    遞歸地刪除整個文件夾及其內容。

  5. shutil.move(src, dst)
    將文件或文件夾從 src 移動到 dst

  6. shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None)
    創建一個歸檔文件(如 ZIP、TAR 等)。

  7. shutil.which(cmd, mode=os.F_OK | os.X_OK, path=None)
    查找可執行文件的路徑。

  8. shutil.register_archive_format(name, function, extra_args=None, description=None)
    注冊一個新的歸檔格式。

  9. shutil.unregister_archive_format(name)
    取消注冊一個歸檔格式。

以下是 shutil 模塊的函數示例:

import shutil# 復制文件
shutil.copy('source.txt', 'destination.txt')# 復制文件夾
shutil.copytree('source_folder', 'destination_folder')# 刪除文件夾
shutil.rmtree('folder_to_remove')# 移動文件
shutil.move('old_name.txt', 'new_name.txt')# 創建 ZIP 歸檔
shutil.make_archive('my_archive', 'zip', 'path_to_folder_to_archive')# 查找特定命令的路徑
path_to_python = shutil.which('python')
print(f"Path to python: {path_to_python}")

1.5 platform 操作系統底層模塊

??platform 提供了許多與底層平臺相關的信息,如操作系統的名稱、版本、架構等。使用 platform 模塊可以編寫更可移植的代碼,因為可以根據運行代碼的操作系統來做出不同的行為或決策。

??這個模塊允許在不知道代碼將在哪種操作系統上運行時,仍然能夠收集有關底層系統的有用信息。在編寫需要適應不同環境的軟件時,這是非常有幫助的。

以下是 platform 模塊中常用的屬性:

  1. platform.system()
    返回操作系統名稱,例如 ‘Windows’, ‘Linux’, ‘Darwin’(對于 MacOS)。

  2. platform.node()
    返回機器的主機名。

  3. platform.release()
    返回操作系統的發行版本號。

  4. platform.version()
    返回操作系統的版本信息。

  5. platform.machine()
    返回機器的硬件名稱,例如 ‘x86’, ‘AMD64’, ‘ARM’。

  6. platform.processor()
    返回機器的處理器名稱,例如 ‘Intel64 Family 6 Model 158 Stepping 9, GenuineIntel’。

  7. platform.python_version()
    返回 Python 解釋器的版本。

  8. platform.python_compiler()
    返回用于編譯 Python 解釋器的編譯器。

  9. platform.python_branch()
    返回 Python 解釋器的分支名稱。

  10. platform.python_revision()
    返回 Python 解釋器的修訂版本號。

  11. platform.python_build()
    返回 Python 解釋器的構建時間戳和構建標識符。

  12. platform.python_implementation()
    返回 Python 解釋器的實現名稱,例如 ‘CPython’, ‘Jython’, ‘IronPython’。

以下是 platform 模塊中常用的函數:

  1. platform.uname()
    返回一個包含五個屬性的元組,與 POSIX uname 命令返回的類似,包括系統名稱、節點名稱、發布版本、版本和機器名稱。

  2. platform.architecture()
    返回一個元組,包含位大小和鏈接的庫名稱。

  3. platform.libc_ver()
    返回 C 庫版本信息,通常是一個包含兩個元素的元組。

以下是 platform 模塊的函數示例:

import platform# 輸出操作系統信息
print("Operating System:", platform.system())
print("Release Version:", platform.release())
print("Machine Hardware:", platform.machine())
print("Processor:", platform.processor())# 輸出Python解釋器信息
print("Python Version:", platform.python_version())
print("Python Compiler:", platform.python_compiler())
print("Python Branch:", platform.python_branch())
print("Python Revision:", platform.python_revision())# 獲取更多信息
print("OS name and version:", platform.platform())
print("OS uname info:", platform.uname())
print("Architecture info:", platform.architecture())
print("C library version:", platform.libc_ver())

二、關于函數適用性的說明

2.1 與操作系統相同的接口

??Python中所有依賴于操作系統的內置模塊的設計都是一樣,只要不同的操作系統某一相同的功能可用,它就使用相同的接口。

??例如,函數 os.stat(path) 以相同的格式返回關于 path 的狀態信息(該格式源于 POSIX 接口)。

??特定于某一操作系統的擴展通過操作 os 模塊也是可用的,但是使用它們是對可移植性的一種威脅。

2.2 支持字節串和字符串

??所有接受路徑或文件名的函數都同時支持字節串和字符串對象,并在返回路徑或文件名時使用相應類型的對象作為結果。

2.3 exception OSError

??如果使用無效或無法訪問的文件名與路徑,或者其他類型正確但操作系統不接受的參數,os模塊的所有函數都拋出 OSError (或者它的子類)。OSError的別名是os.error

三、文件名,命令行參數,以及環境變量

??在 Python 中,使用字符串類型表示文件名、命令行參數和環境變量。 在某些系統上,在將這些字符串傳遞給操作系統之前,必須將這些字符串解碼為字節。

??Python 使用 filesystem encoding and error handler 來執行此轉換,可以通過 sys.getfilesystemencoding() 獲取在文件系統中編碼文件名的字符串。這通常與操作系統的默認文件系統編碼有關。

??例如,在 Unix 和 Linux 系統中,默認的文件系統編碼通常是 ‘UTF-8’。而在 Windows 中,這取決于系統配置和版本,但通常是 ‘cp1252’。

??這里是一個簡單的例子來演示如何使用這個函數:

import sysfilesystem_encoding = sys.getfilesystemencoding()
print("Filesystem encoding:", filesystem_encoding)

注意:文件系統編碼可能不同于 Python 解釋器用來解釋源代碼的編碼,后者可以通過在源代碼文件的開頭添加特殊的注釋來指定(例如 # coding: utf-8

??filesystem encoding and error handler 是在 Python 啟動時通過 PyConfig_Read() 函數來配置的:請參閱 PyConfigfilesystem_encodingfilesystem_errors 等成員。

??文件系統編碼器 必須保證能成功解碼所有 128 以內的字節。如果不能保證,API 函數可能觸發 UnicodeError

四 文件系統編碼格式與錯誤處理句柄

??filesystem encoding and error handler 是Python 用來從操作系統解碼字節串和向操作系統編碼 Unicode 的編碼格式與錯誤處理句柄。

??文件系統編碼格式必須保證能成功解碼長度在 128 以下的所有字節串。 如果文件系統編碼格式無法提供此保證,則 API 函數可能會引發 UnicodeError

??sys.getfilesystemencoding()sys.getfilesystemencodeerrors() 函數可被用來獲取文件系統編碼格式與錯誤處理句柄。

??filesystem encoding and error handler是在 Python 啟動時通過 PyConfig_Read()函數來配置的:請查閱 PyConfigfilesystem_encodingfilesystem_errors

五、locale encoding – 語言區域編碼格式

??在 Unix 上,它是 LC_CTYPE 語言區域的編碼格式。 它可以通過 locale.setlocale(locale.LC_CTYPE, new_locale) 來設置。

??在 Windows 上,它是 ANSI 代碼頁 (如: "cp1252")。

??在 Android 和 VxWorks 上,Python 使用 "utf-8" 作為語言區域編碼格式。

??locale.getencoding() 可被用來獲取語言區域編碼格式。

六、Python UTF-8 模式

??Python UTF-8 模式是一個特殊的模式,此模式會忽略 locale encoding 并強制使用 UTF-8 編碼。如果在 Python 啟動時 LC_CTYPE 區域設為 CPOSIX ,則啟用 Python UTF-8 模式 (參見 PyConfig_Read() 函數)。它可以通過命令行選項 -X utf8 和環境變量 PYTHONUTF8,來啟用或禁用。

??如果沒有設置 PYTHONUTF8 環境變量,那么解釋器默認使用當前的地區設置,除非 當前地區識別為基于 ASCII 的傳統地區(如 PYTHONCOERCECLOCALE 所述),并且 locale coercion 被禁用或失敗。在這種傳統地區,除非顯式指明不要如此,解釋器將默認啟用 UTF-8 模式。Python UTF-8 模式只能在 Python 啟動時啟用。其值可以從 sys.flags.utf8_mode 讀取。

??當處在Python UTF-8 模式下時,會出現以下特征:

  1. 用 UTF-8 作為 文件系統編碼。
  2. sys.getfilesystemencoding() 返回 'utf-8'
  3. locale.getpreferredencoding() 返回 'utf-8' (do_setlocale 參數不起作用)。
  4. sys.stdin, sys.stdoutsys.stderr 都將 UTF-8 用作它們的文本編碼,并且為 sys.stdinsys.stdout 啟用 surrogateescape 錯誤處理句柄 (sys.stderr 會繼續使用 backslashreplace 如同在默認的局部感知模式下一樣)
  5. 在 Unix 上,os.device_encoding() 返回 'utf-8' 而不是設備的編碼格式。

注意 UTF-8 模式下的標準流設置可以被 PYTHONIOENCODING 所覆蓋(在默認的區域感知模式下也同樣如此)。

??當低層級 API切換到UTF-8編碼后,其他高層級 API 也相應改變:

  • 命令行參數,環境變量和文件名會使用 UTF-8 編碼來解碼為文本。
  • os.fsdecode()os.fsencode() 會使用 UTF-8 編碼。
  • open(), io.open()codecs.open() 默認會使用 UTF-8 編碼。 但是,它們默認仍將使用嚴格錯誤處理句柄,因此試圖在文本模式下打開二進制文件將可能引發異常,而不是生成無意義的數據。

(未完待續……)

may the odds be ever in your favor ~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716987.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716987.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716987.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git版本管理常用指令

Git常用命令 一、基本指令二、本地倉庫管理三、遠程倉庫管理四、分支管理五、儲藏區六、標簽管理一、基本指令 查看Git安裝版本:git --version 查看log指令的幫助信息:git log --help 配置Git用戶名:git config --global user.name “xxxxx” 配置Git郵箱: git config --…

2024年騰訊云新用戶優惠券領取入口及使用教程

隨著云計算技術的不斷發展和普及,越來越多的個人和企業選擇使用云服務。騰訊云作為國內領先的云服務提供商,為了吸引新用戶,經常推出各種優惠活動,其中就包括新用戶專屬優惠券,本文將為大家分享騰訊云新用戶優惠券的領…

5個好玩神奇還免費的工具網站收藏不后悔-搜嗖工具箱

生命倒計時 http://www.thismuchlonger.com 這是一個相哇塞的網站,可以讓我們靜下心來好好想想我們來這個世界究竟為了什么,因為當我們作為命運的主宰者。敲打鍵盤設定好自己一生長度的時候,我們的剩余壽命已經成絕對值,一旦生命…

創建型模式之原型模式

一、概述 1、工作原理:將一個原型對象傳給要發動創建的對象(即客戶端對象),這個要發動創建的對象通過請求原型對象復制自己來實現創建過程 2、通過克隆方法所創建的對象是全新的對象,它們在內存中擁有新的地址,每一個克隆對象都是獨立的 3…

MySQL 中的 varchar 和 char 有什么區別?MySQL中 in 和 exists 區別?

MySQL 中的 varchar 和 char 有什么區別? char 是一個定長字段,假如申請了char(10)的空間,那么無論實際存儲多少內容.該字段都占用 10 個字符,而 varchar 是變長的,也就是說申請的只是最大長度,占用的空間為實際字符長度1,最后一個字符存儲使用了多長的空間. 在檢索…

李沐動手學習深度學習——3.6練習

本節直接實現了基于數學定義softmax運算的softmax函數。這可能會導致什么問題?提示:嘗試計算exp(50)的大小。 可能存在超過計算機最大64位的存儲,導致精度溢出,影響最終計算結果。 本節中的函數cross_entropy是根據交叉熵損失函數…

JavaScript之數據類型

系列文章目錄 文章目錄 系列文章目錄前言 前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站,這篇文章男女通用,看懂了就去分享給你的碼吧。 數據類型   Java…

20.圖

圖的基本概念 1.圖的定義 由頂點和邊組成的集合,G(V,E) 2.基本概念 鄰接點: 對于無向圖u v來說,uv互為鄰接點 對于有向圖u->v來說,v是u的鄰接點,但u不是v的臨界點 路徑: 一個頂點到另一個頂點所經過的…

從Poincare猜想看中國數學的國際地位

2006年丘成桐學派利用北京晨興數學中心,宣布一名俄國學者Poincare猜想研究中存在錯誤,已經由華裔學者朱熹平和曹懷東糾正過來,但數年以后我發現作為千禧七問題之一的Poincazre猜想,英國克萊數學所還是把1百萬美元獎金送給俄國人。…

藍橋杯:卡片

題目 小藍有很多數字卡片,每張卡片上都是數字0 到9。 小藍準備用這些卡片來拼一些數,他想從1 開始拼出正整數,每拼一個,就保存起來,卡片就不能用來拼其它數了。 小藍想知道自己能從1 拼到多少。 例如,當小…

動態規劃-最長公共子串(c)

動態規劃 動態規劃(dynamic programming)是一種算法設計方法。基本思想是在對一個問題的多階段決策中,按照某一順序,根據每一步所選決策的不同,會引起狀態的轉移,最后會在變化的狀態中獲取到一個決策序列。…

vs code更新后json文件無法識別通配符 ,編譯多文件失敗的解決辦法

問題描述 在Mac或者LInux上,進行C/C相同路徑下進行多文件編譯時,之前設置好的json文件突然不能解釋通配符,并且將帶有單引號的地址傳給clang,由于*.c被擴在單引號中,clang找不到文件導致失敗。 如果將命令端中的指令復…

云服務器無法Ping通解決

問題: 使用公網IP地址PING云服務器,無法PING通 但是可SSH到服務器,表示通信鏈路是正常的,可能是端口或路徑規則未開放導致 登陸云服務器后臺,進行安全組規則查看,發現ICMP沒有放行 添加允許ICMP連接規則 成功PING通云服務器

LeetCode——二叉樹(Java)

二叉樹 簡介[簡單] 144. 二叉樹的前序遍歷、94. 二叉樹的中序遍歷、145. 二叉樹的后序遍歷二叉樹層序遍歷[中等] 102. 二叉樹的層序遍歷[中等] 107. 二叉樹的層序遍歷 II[中等] 199. 二叉樹的右視圖[簡單] 637. 二叉樹的層平均值[中等] 429. N 叉樹的層序遍歷[中等] 515. 在每個…

Java接口

接口的定義 抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。 接口并不是類,編寫接口的方式和類很相似,但是他們屬于不同的概念。類描述的是對象的屬性和方法。接口則包含類要實…

AcWing 4726. 尋找數字

解題思路 在這個二插搜索樹中尋找&#xff0c;4和7數量相等&#xff0c;并且大于n的最小數。 相關代碼 import java.util.*;public class Main {static String s;static List<Integer> res new ArrayList<>();static long n;static long ansLong.MAX_VALUE;publ…

遞歸實現指數型枚舉(c++題解)

題目描述 從 1~n 這 n(n<16) 個整數中隨機選取任意多個&#xff0c;輸出所有可能的選擇方案。 輸入格式 一個整數n。 輸出格式 每行一種方案。同一行內的數必須升序排列&#xff0c;相鄰兩個數用恰好1個空格隔開。對于沒有選任何數的方案&#xff0c;輸出空行。 樣例 …

python 爬蟲 app爬取之charles的使用

專欄系列:http://t.csdnimg.cn/WfCSx 前言 前面介紹的都是爬取 Web 網頁的內容。隨著移動互聯網的發展,越來越多的企業并沒有提供 Web 網頁端的服務,而是直接開發了 App,更多更全的信息都是通過 App 來展示的。那么針對 App 我們可以爬取嗎?當然可以。 App 的爬取相比 …

使用HTML5畫布(Canvas)模擬圖層(Layers)效果

使用HTML5畫布&#xff08;Canvas&#xff09;模擬圖層&#xff08;Layers&#xff09;效果 在圖形處理和計算機圖形學中&#xff0c;圖層&#xff08;Layers&#xff09;是指將圖像分成不同的可獨立編輯、組合和控制的部分的技術或概念。每個圖層都可以包含不同的圖形元素、效…

18.題目:編號760 數的計算

題目&#xff1a; ###該題主要考察遞推、遞歸 將該題看成若干個子問題 #include<bits/stdc.h> using namespace std; const int N20; int a[N];int dfs(int dep){int res1;for(int i1;i<a[dep-1]/2;i){a[dep]i;resdfs(dep1);}return res; }int main(){int n;cin>…