python根須系統斜杠_深入淺出Python中的os模塊

6ea5e99e175dce6ceec36b7ea66a8d05.png

「@Author:Runsen」

當初學Python的時候,把一些標準庫和第三方開源庫學的七零八落,不成系統,正好趁這個機會來系統的整理一下,先從Python常用的標準庫os開始吧。

os

OS模塊簡單的來說它是一個Python的系統編程的操作模塊,可以處理文件和目錄這些我們日常手動需要做的 操作。可以查看OS模塊的幫助文檔。

import?os?#導入os模塊??
help(os)???#查看os模塊幫助文檔,里面詳細的模塊相關函數和使用方法

獲取當前系統

首先我們需要先導入os模塊:直接打印os.name

import?os
print(os.name)

#若是Windows則輸出'nt',若是Linux/Unix,則是'posix'

獲取當前文件的絕對路徑

#?獲取當前文件的絕對路徑?桌面上的demo.py
absolute_file_path?=?os.path.abspath(__file__)
print(absolute_file_path)

打印結果:C:\Users\YIUYE\Desktop\demo.py

獲取當前目錄

函數os.getcwd():功能:獲取當前目錄,python的工作目錄。

cwd?=?os.getcwd()
print(cwd

打印結果:C:\Users\YIUYE\Desktop

判斷文件是否存在,返回值為布爾型

import?os
file_path?=?r"C:\Users\YIUYE\Desktop\demo.py"
has_file?=?os.path.exists(file_path)
print("file?path:?[{}]?is?exist:?{}".format(file_path,?has_file))

file?path:?[C:\Users\YIUYE\Desktop\demo.py]?is?exist:?True

獲取文件的名稱

import?os
#?獲取文件的名稱
file_name?=?os.path.basename(__file__)
print(file_name)

打印結果:demo.py

文件重命名


old_file?=?r"C:\Users\YIUYE\Desktop\demo.py"
#?或者old_file?=?"C:/Users/YIUYE/Desktop/demo.py"??前面沒有r
new_file?=?r"C:\Users\YIUYE\Desktop\demo1.py"
#?重命名文件
os.rename(old_file,?new_file)

注意點:Unix使用斜桿/ 作為路徑分隔符,而web應用最新使用在Unix系統上面,所以目前所有的網絡地址都采用 斜桿/作為分隔符。

Windows由于使用 斜桿/ 作為DOS命令提示符的參數標志了,為了不混淆,所以采用 反斜杠\ 作為路徑分隔符。所以目前windows系統上的文件瀏覽器都是用 反斜杠\ 作為路徑分隔符。

隨著發展,DOS系統已經被淘汰了,命令提示符也用的很少,很多時候斜桿和反斜杠在大多數情況下可以互換,沒有影響。

記住:

  • 瀏覽器地址欄網址使用 斜桿/ ;

  • windows文件瀏覽器上使用 反斜杠\ ;

  • 出現在html url() 屬性中的路徑,指定的路徑是網絡路徑,所以必須用 斜桿/ ;

出現在普通字符串中的路徑,如果代表的是windows文件路徑,則使用 反斜杠\ 需要在前面加r;如果代表的是網絡文件路徑,則必須使用 斜桿/

具體報錯和指示如下圖。

0e02111d9e23b4bb88acf9958fa22255.png
633694a4dd2de2b3910ce17ded0ffd4c.png

如果是Mac沒有反斜杠\,和Linux一樣都是只有斜桿/

創建文件夾

os.makedirs創建多級目錄

#?路徑中的多個文件夾都不存在時,可以遞歸創建,code和code1文件夾本身沒有
forders_path?=?r"C:\Users\YIUYE\Desktop\code\code1"
os.makedirs(forders_path)

os.path.mkdir:只能創建一個文件夾, code文件夾存在,才能創建code1文件夾,如果code文件夾不存在,則會出錯。

forder_path?=?r"C:\Users\YIUYE\Desktop\code\code1"
os.mkdir(forder_path)

獲取文件夾下的所有文件名

forder_path?=?r"D:\學習資料"
#?獲取文件夾code下的所有文件名,以列表的形式返回
file_names?=?os.listdir(forder_path)
print(file_names)

獲取文件夾下的所有文件夾和文件(無遞歸遍歷)

print(os.scandir(r"D:\學習資料"))

打印結果:

返回的是可迭代對象,我們用for循環迭代一下遍出結果,這里進行判斷,尋找文件,而不是文件夾

for?f?in?os.scandir(r"D:\學習資料"):
???if?not?f.is_file():?#is_file判斷是否是文件
???????print('yes',f)
???else:
???????print('no:',?f)
03ecf5d6f397f925c40399282e6e1fa5.png

將path分割成路徑名和文件名

os.path.split函數返回一個路徑的目錄名和文件名

print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py"))
print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py")[0])
print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py")[1])


打印結果:('C:\\Users\\YIUYE\\Desktop',?'demo.py')
C:\Users\YIUYE\Desktop
demo.py

拼接目錄與文件名或目錄

os.path.join函數拼接目錄與文件名或目錄

print(os.path.join('I',?'am',?'Runsen'))

打印結果:I\am\Runsen

練習

「創建一個函數,獲取文件夾下包含子文件夾的所有文件路徑,并且存入list輸出?」

最簡單的方法使用os.walk

os.walk()用類似于深度遍歷的方式遍歷文件夾中的子文件夾以及文件。

import?os
def?get_Listfiles(path):
????Filelist?=?[]
????# os.walk()用類似于深度遍歷的方式遍歷文件夾中的子文件夾以及文件。
????#?最基本的顯示方式為(root_path,[file_dirs],[files]),
????for?home,?dirs,?files?in?os.walk(path):
????????for?file?in?files:
????????????Filelist.append(os.path.join(home,?file))
????????????#Filelist.append(file)
????return?Filelist
print(get_Listfiles(r"D:\Python"))

具體運行結果如下圖。

398fa05b27a3b014223e5df7bef6a26a.png

掃描二維碼

獲取更多精彩

f7a3048f15006c0e7f463667ca0a7d79.png

往期推薦

Python僅用3行代碼就能輸出花式字符串圖集,同事直呼666!

Python讀寫yaml排版混亂還丟失注釋?我來告訴你解決辦法!

關于Python的前后、單雙下劃線作用,看完這篇文章,吊打面試官!

驚爆:當Python代碼遇到zip解壓炸彈,未做防護的你后悔莫及!

Pycharm IDEA破解 漢化 插件 帶你一文打盡!

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

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

相關文章

密碼學專題 隨機數文件

無論使用OpenSSL的指令還是其API,隨機數文件都是會經常碰到的一個概念。大部分密碼算法的安全性都跟隨機數的好壞相關,所以一個成功的密碼學應用軟件,對隨機數的處理是不能隨便的。OpenSSL雖然沒有提供很完美的隨機數生成程序,但是…

Java web后端7JSTL

概括 下載jstl的jar包 官網&#xff1a;https://mvnrepository.com/ 網址1&#xff1a;https://search.maven.org/ 在pomxml中插入依賴&#xff1a; <dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1…

python輸入程序_python程序的輸入輸出(acm的幾個小程序)

#!/usr/bin/env python#codingutf-8 a[]for x inraw_input().split(): a.append(int(x))print sum(a) 下面的代碼只有一行&#xff0c;&#xff0c;可惜不是我想出來的&#xff01;&#xff01;&#xff01;&#xff01;&#xff1a; print sum(int(x) for x in raw_input().sp…

密碼學專題 口令輸入的方式

雖然口令的安全性很值得擔憂&#xff0c;但是口令在OpenSSL中是經常使用的&#xff0c;這是沒有辦法替代的一種簡易的保護數據的方法。OpenSSL中使用口令的地方很多&#xff0c;比如密鑰的加密和解密&#xff0c;等等。OpenSSL的指令提供了多種靈活的口令輸入方法&#xff0c;但…

Python學習14 模塊和包

模塊 公共類、函數都可以放在獨立的文件中&#xff0c;這樣其他多個程序都可以使用&#xff0c;而不必把這些公共性的類、函數等在每個程序中復制一份&#xff0c;這樣獨立的文件就叫做模塊&#xff0c;它們的擴展名為.py 標準庫中的模塊 使用help查看模塊 代碼&#xff1a; …

python語句分為_python以什么劃分語句塊

語句塊是在條件為真&#xff08;條件語句&#xff09;時執行或者執行多次&#xff08;循環語句&#xff09;的一組語句&#xff1b;在代碼前放置空格來縮進語句即可創建語句塊&#xff0c;語句塊中的每行必須是同樣的縮進量&#xff1b;&#xff08;推薦學習&#xff1a;Python…

Python學習15 正則表達式1

網址 正則表達式測試網址&#xff1a;https://regex101.com/ 概述 正則表達式&#xff1a; 正則表達式(Regular Expression)是一種文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之間的字母&#xff09;和特殊字符&#xff08;稱為"元字符"…

STL源碼剖析 空間配置器 查漏補缺

ptrdiff_t含義 減去兩個指針的結果的帶符號整數類型ptrdiff_t (Type support) - C 中文開發手冊 - 開發者手冊 - 云社區 - 騰訊云 std::set_new_handler&#xff08;&#xff09;函數的理解 關于set_new_handler的理解_wck0617-CSDN博客new分配內存的時候 如果分配的空間不…

python每天定時9點執行_python定時器每天訂時執行的實例方法

python定時器,實現每天凌晨3點執行的方法 如下所示&#xff1a;Created on 2018-4-20 例子:每天凌晨3點執行func方法import datetime import threading def func(): print("haha") #如果需要循環調用&#xff0c;就要添加以下方法 timer threading.Timer(86400, fun…

Python學習16 正則表達式2 re模塊

re 模塊 re 模塊&#xff1a; Python的 re 模塊實現了正則表達式處理的功能。 導入re模塊后&#xff0c;使用findall、search函數可以進行匹配 查找&#xff1a;match和search 多個匹配上的&#xff0c;也只會返回第一個匹配上的 re.match()&#xff1a; 需要特別注意的是&…

STL源碼剖析 內存基本處理工具 初始化空間的五個函數

初始化空間的五個函數構造函數 construct()析構函數 destroy()剩余三個底層函數 和 高層函數之間的對應關系如下uninitialized_copy() 對應 copy()uninitialized_fill() 對應 fill()uninitialized_fill_n() 對應 fill_n()使用<memory>使用上述三個底層函數 uninitiali…

單基因gsea_篩到5分的核心基因以后你可以怎么做?

這一次我們從一些已經發表的文章拆解&#xff0c;我們來看看&#xff0c;你找到了一個核心基因以后&#xff0c;你可以怎么做呢&#xff1f;我們就不說那么多廢話了&#xff0c;直接用幾篇文章的解讀來帶著大家領會一下如何去進行下一步的分析。Case1&#xff1a;預后標志物免疫…

安卓 原生okhttp使用get與post獲取網絡數據

網址 https://square.github.io/okhttp/ 配置 依賴 在module的build.gradle中&#xff1a; implementation com.squareup.okhttp3:okhttp:3.14.7implementation com.squareup.okio:okio:1.17.5AndroidManifest.xml <uses-permission android:name"android.permissi…

STL源碼剖析 迭代器的概念和traits編程技法

迭代器&#xff1a;依序巡防某個聚合物(容器)所含的各個元素&#xff0c;但是不需要暴露這個聚合物的內部表述方式核心思想&#xff1a;將容器和算法分開&#xff0c;彼此獨立設計容器和算法的泛型化&#xff0c;均可以使用模板&#xff0c;使用迭代器連接容器和算法例子 templ…

.sql文件如何執行_干貨|一條SQL查詢語句是如何執行的

作者&#xff1a;wanber鏈接&#xff1a;https://blog.nowcoder.net/n/9e120e8f1314466bb44fe706b283dc20

STL源碼剖析 5中迭代器型別

最常使用的5種迭代器的型別 為 value_type、difference_type、pointer、reference、iterator_category。如果想要自己開發的容器和STL進行適配&#xff0c;就需要定義上述5種類型 iteraor_traits 必須針對傳入的型別為 pointer 或者 pointer-to-const設計偏特化版本 template &…

Python學習16 正則表達式3 練習題

用戶名匹配 1.用戶名匹配&#xff1a;由數字、大小寫字母、下劃線_、中橫線-組成&#xff0c;長度為6-12位&#xff0c;不能以數字開頭。 import re usernameab578_-SDF resultre.search(^[a-zA-Z_-][0-9a-zA-Z_-]{5,12}$,username) print(result)郵箱 2.驗證輸入的郵箱&…

加載tf模型 正確率很低_深度學習模型訓練全流程!

↑↑↑關注后"星標"Datawhale每日干貨 & 每月組隊學習&#xff0c;不錯過Datawhale干貨 作者&#xff1a;黃星源、奉現&#xff0c;Datawhale優秀學習者本文從構建數據驗證集、模型訓練、模型加載和模型調參四個部分對深度學習中模型訓練的全流程進行講解。一個成…

Python學習17 Turtle庫繪圖

學習網址&#xff1a;https://docs.python.org/zh-cn/3/library/turtle.html Turtle庫 Turtle庫是Python語言中一個很流行的繪制圖像的函數庫&#xff0c;一個小烏龜&#xff0c;在一個橫軸為x、縱軸為y的坐標系原點&#xff08;畫布中心&#xff09;&#xff0c;(0,0)位置開…

android ros 節點編寫_嵌入式的我們為什么要學ROS

前言本來是要寫一篇STM32移植ROS的一個小lib庫&#xff0c;ROS一般都是需要跑在Linux上的&#xff0c;STM32使用就是當成一個ROS通訊的小節點&#xff0c;但是寫文章時間不夠&#xff0c;所以就簡單做一篇ROS的介紹文章&#xff0c;分享給嵌入式的小伙伴們。ROS現在在機器人領域…