當前位置:首頁 » 編程語言 » abspathpython

abspathpython

發布時間: 2023-01-05 22:23:59

python 常用的系統函數有哪些

1.常用內置函數:(不用import就可以直接使用)
help(obj) 在線幫助, obj可是任何類型
callable(obj) 查看一個obj是不是可以像函數一樣調用
repr(obj) 得到obj的表示字元串,可以利用這個字元串eval重建該對象的一個拷貝
eval_r(str) 表示合法的python表達式,返回這個表達式
dir(obj) 查看obj的name space中可見的name
hasattr(obj,name) 查看一個obj的name space中是否有name
getattr(obj,name) 得到一個obj的name space中的一個name
setattr(obj,name,value) 為一個obj的name space中的一個name指向vale這個object
delattr(obj,name) 從obj的name space中刪除一個name
vars(obj) 返回一個object的name space。用dictionary表示
locals() 返回一個局部name space,用dictionary表示
globals() 返回一個全局name space,用dictionary表示
type(obj) 查看一個obj的類型
isinstance(obj,cls) 查看obj是不是cls的instance
issubclass(subcls,supcls) 查看subcls是不是supcls的子類

類型轉換函數
chr(i) 把一個ASCII數值,變成字元
ord(i) 把一個字元或者unicode字元,變成ASCII數值
oct(x) 把整數x變成八進製表示的字元串
hex(x) 把整數x變成十六進製表示的字元串
str(obj) 得到obj的字元串描述
list(seq) 把一個sequence轉換成一個list
tuple(seq) 把一個sequence轉換成一個tuple
dict(),dict(list) 轉換成一個dictionary
int(x) 轉換成一個integer
long(x) 轉換成一個long interger
float(x) 轉換成一個浮點數
complex(x) 轉換成復數
max(...) 求最大值
min(...) 求最小值
用於執行程序的內置函數
complie 如果一段代碼經常要使用,那麼先編譯,再運行會更快。

2.和操作系統相關的調用
系統相關的信息模塊 import sys
sys.argv是一個list,包含所有的命令行參數.
sys.stdout sys.stdin sys.stderr 分別表示標准輸入輸出,錯誤輸出的文件對象.
sys.stdin.readline() 從標准輸入讀一行 sys.stdout.write("a") 屏幕輸出a
sys.exit(exit_code) 退出程序
sys.moles 是一個dictionary,表示系統中所有可用的mole
sys.platform 得到運行的操作系統環境
sys.path 是一個list,指明所有查找mole,package的路徑.

操作系統相關的調用和操作 import os
os.environ 一個dictionary 包含環境變數的映射關系 os.environ["HOME"] 可以得到環境變數HOME的值
os.chdir(dir) 改變當前目錄 os.chdir('d:\\outlook') 注意windows下用到轉義
os.getcwd() 得到當前目錄
os.getegid() 得到有效組id os.getgid() 得到組id
os.getuid() 得到用戶id os.geteuid() 得到有效用戶id
os.setegid os.setegid() os.seteuid() os.setuid()
os.getgruops() 得到用戶組名稱列表
os.getlogin() 得到用戶登錄名稱
os.getenv 得到環境變數
os.putenv 設置環境變數
os.umask 設置umask
os.system(cmd) 利用系統調用,運行cmd命令
操作舉例:
os.mkdir('/tmp/xx') os.system("echo 'hello' > /tmp/xx/a.txt") os.listdir('/tmp/xx')
os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt') os.remove('/tmp/xx/b.txt') os.rmdir('/tmp/xx')
用python編寫一個簡單的shell
#!/usr/bin/python
import os, sys
cmd = sys.stdin.readline()
while cmd:
os.system(cmd)
cmd = sys.stdin.readline()

用os.path編寫平台無關的程序
os.path.abspath("1.txt") == os.path.join(os.getcwd(), "1.txt")
os.path.split(os.getcwd()) 用於分開一個目錄名稱中的目錄部分和文件名稱部分。
os.path.join(os.getcwd(), os.pardir, 'a', 'a.doc') 全成路徑名稱.
os.pardir 表示當前平台下上一級目錄的字元 ..
os.path.getctime("/root/1.txt") 返回1.txt的ctime(創建時間)時間戳
os.path.exists(os.getcwd()) 判斷文件是否存在
os.path.expanser('~/dir') 把~擴展成用戶根目錄
os.path.expandvars('$PATH') 擴展環境變數PATH
os.path.isfile(os.getcwd()) 判斷是否是文件名,1是0否
os.path.isdir('c:\Python26\temp') 判斷是否是目錄,1是0否
os.path.islink('/home/huaying/111.sql') 是否是符號連接 windows下不可用
os.path.ismout(os.getcwd()) 是否是文件系統安裝點 windows下不可用
os.path.samefile(os.getcwd(), '/home/huaying') 看看兩個文件名是不是指的是同一個文件
os.path.walk('/home/huaying', test_fun, "a.c")
遍歷/home/huaying下所有子目錄包括本目錄,對於每個目錄都會調用函數test_fun.
例:在某個目錄中,和他所有的子目錄中查找名稱是a.c的文件或目錄。
def test_fun(filename, dirname, names): //filename即是walk中的a.c dirname是訪問的目錄名稱
if filename in names: //names是一個list,包含dirname目錄下的所有內容
print os.path.join(dirname, filename)
os.path.walk('/home/huaying', test_fun, "a.c")

文件操作
打開文件
f = open("filename", "r") r只讀 w寫 rw讀寫 rb讀二進制 wb寫二進制 w+寫追加
讀寫文件
f.write("a") f.write(str) 寫一字元串 f.writeline() f.readlines() 與下read類同
f.read() 全讀出來 f.read(size) 表示從文件中讀取size個字元
f.readline() 讀一行,到文件結尾,返回空串. f.readlines() 讀取全部,返回一個list. list每個元素表示一行,包含"\n"\
f.tell() 返回當前文件讀取位置
f.seek(off, where) 定位文件讀寫位置. off表示偏移量,正數向文件尾移動,負數表示向開頭移動。
where為0表示從開始算起,1表示從當前位置算,2表示從結尾算.
f.flush() 刷新緩存
關閉文件
f.close()

regular expression 正則表達式 import re
簡單的regexp
p = re.compile("abc") if p.match("abc") : print "match"
上例中首先生成一個pattern(模式),如果和某個字元串匹配,就返回一個match object
除某些特殊字元metacharacter元字元,大多數字元都和自身匹配。
這些特殊字元是 。^ $ * + ? { [ ] \ | ( )
字元集合(用[]表示)
列出字元,如[abc]表示匹配a或b或c,大多數metacharacter在[]中只表示和本身匹配。例:
a = ".^$*+?{\\|()" 大多數metachar在[]中都和本身匹配,但"^[]\"不同
p = re.compile("["+a+"]")
for i in a:
if p.match(i):
print "[%s] is match" %i
else:
print "[%s] is not match" %i
在[]中包含[]本身,表示"["或者"]"匹配.用

表示.
^出現在[]的開頭,表示取反.[^abc]表示除了a,b,c之外的所有字元。^沒有出現在開頭,即於身身匹配。
-可表示範圍.[a-zA-Z]匹配任何一個英文字母。[0-9]匹配任何數字。
\在[]中的妙用。
\d [0-9]
\D [^0-9]
\s [ \t\n\r\f\v]
\S [^ \t\n\r\f\v]
\w [a-zA-Z0-9_]
\W [^a-zA-Z0-9_]
\t 表示和tab匹配, 其他的都和字元串的表示法一致
\x20 表示和十六進制ascii 0x20匹配
有了\,可以在[]中表示任何字元。註:單獨的一個"."如果沒有出現[]中,表示出了換行\n以外的匹配任何字元,類似[^\n].
regexp的重復
{m,n}表示出現m個以上(含m個),n個以下(含n個). 如ab{1,3}c和abc,abbc,abbbc匹配,不會與ac,abbbc匹配。
m是下界,n是上界。m省略表下界是0,n省略,表上界無限大。
*表示{,} +表示{1,} ?表示{0,1}
最大匹配和最小匹配 python都是最大匹配,如果要最小匹配,在*,+,?,{m,n}後面加一個?.
match object的end可以得到匹配的最後一個字元的位置。
re.compile("a*").match('aaaa').end() 4 最大匹配
re.compile("a*?").match('aaaa').end() 0 最小匹配
使用原始字元串
字元串表示方法中用\\表示字元\.大量使用影響可讀性。
解決方法:在字元串前面加一個r表示raw格式。
a = r"\a" print a 結果是\a
a = r"\"a" print a 結果是\"a
使用re模塊
先用re.compile得到一個RegexObject 表示一個regexp
後用pattern的match,search的方法,得到MatchObject
再用match object得到匹配的位置,匹配的字元串等信息
RegxObject常用函數:
>>> re.compile("a").match("abab") 如果abab的開頭和re.compile("a")匹配,得到MatchObject
<_sre.SRE_Match object at 0x81d43c8>
>>> print re.compile("a").match("bbab")
None 註:從str的開頭開始匹配
>>> re.compile("a").search("abab") 在abab中搜索第一個和re_obj匹配的部分
<_sre.SRE_Match object at 0x81d43c8>
>>> print re.compile("a").search("bbab")
<_sre.SRE_Match object at 0x8184e18> 和match()不同,不必從開頭匹配
re_obj.findall(str) 返回str中搜索所有和re_obj匹配的部分.
返回一個tuple,其中元素是匹配的字元串.
MatchObject的常用函數
m.start() 返回起始位置,m.end()返回結束位置(不包含該位置的字元).
m.span() 返回一個tuple表示(m.start(), m.end())
m.pos(), m.endpos(), m.re(), m.string()
m.re().search(m.string(), m.pos(), m.endpos()) 會得到m本身
m.finditer()可以返回一個iterator,用來遍歷所有找到的MatchObject.
for m in re.compile("[ab]").finditer("tatbxaxb"):
print m.span()
高級regexp
| 表示聯合多個regexp. A B兩個regexp,A|B表示和A匹配或者跟B匹配.
^ 表示只匹配一行的開始行首,^只有在開頭才有此特殊意義。
$ 表示只匹配一行的結尾
\A 表示只匹配第一行字元串的開頭 ^匹配每一行的行首
\Z 表示只匹配行一行字元串的結尾 $匹配第一行的行尾
\b 只匹配詞的邊界 例:\binfo\b 只會匹配"info" 不會匹配information
\B 表示匹配非單詞邊界
示例如下:
>>> print re.compile(r"\binfo\b").match("info ") #使用raw格式 \b表示單詞邊界
<_sre.SRE_Match object at 0x817aa98>
>>> print re.compile("\binfo\b").match("info ") #沒有使用raw \b表示退格符號
None
>>> print re.compile("\binfo\b").match("\binfo\b ")
<_sre.SRE_Match object at 0x8174948>
分組(Group) 示例:re.compile("(a(b)c)d").match("abcd").groups() ('abc', 'b')
#!/usr/local/bin/python
import re
x = """
name: Charles
Address: BUPT

name: Ann
Address: BUPT
"""
#p = re.compile(r"^name:(.*)\n^Address:(.*)\n", re.M)
p = re.compile(r"^name:(?P.*)\n^Address:(?P.*)\n", re.M)
for m in p.finditer(x):
print m.span()
print "here is your friends list"
print "%s, %s"%m.groups()
Compile Flag
用re.compile得到RegxObject時,可以有一些flag用來調整RegxObject的詳細特徵.
DOTALL, S 讓.匹配任意字元,包括換行符\n
IGNORECASE, I 忽略大小寫
LOCALES, L 讓\w \W \b \B和當前的locale一致
MULTILINE, M 多行模式,隻影響^和$(參見上例)
VERBOSE, X verbose模式

② python文件名獲取文件路徑

概述

使用os.path.abspath()函數來獲取文件絕對路徑

解析

文件目錄結構如下:

os.path.abspath(path)返回path規范化的絕對路徑(但這個路徑不一定是真實的路徑),如果path僅是一個文件名,使用該函數後返回的路徑是當前工作目錄路徑連接改文件名後所組成的新的路徑名。

>>> import os.path

>>> os.path.abspath("a.py")

'C:\Users\Administrator\a.py'

os.path.split(path)將path分割成目錄和文件名二元組返回

>>> os.path.split("C:\Users\Administrator\a.py")
('C:\Users\Administrator', 'a.py')

os.path.dirname(path)返回path的目錄,其實就是os.path.split(path)的第一個元素

>>> os.path.dirname("C:\Users\Administrator\a.py")
'C:\Users\Administrator'

os.path.basename(path)返回path最後的文件名。如果path以/或結尾,就會返回空值。即os.path.split(path)的第二個元素。

>>> os.path.basename("C:\Users\Administrator\a.py")

'a.py'

os.path.commonprefix(list)返回list中所有path共有的最長的路徑,從左向右,相同字元。

os.path.exists(path)如果path存在,返回True;如果path不存在,返回False。

os.path.isabs(path)如果path是絕對路徑,返回True。

os.path.normpath(path)規范path字元串形式(規範文件路徑)

os.path.isfile(path)判斷路徑是否為文件,是返回True,否則返回False

os.path.isdir(path)如果path是一個存在的目錄,返回True,否則返貨False。

os.path.islink(path)是否是鏈接;但如果系統不支持鏈接,則返回False。

③ Python怎樣得到資源文件的絕對路徑

路徑有兩種,相對路徑和絕對路徑。 對於Unix-Like系統來說,絕對路徑就是以/開頭的路徑。 相對路徑就是不以/開頭的路徑。
其實,操作系統中實際只有一種路徑,那就是絕對路徑。 相對路徑,只是程序自己幫我們修改為絕對路徑了。
操作系統的程序運行器利用環境變數,為我們把相對路徑生成為絕對路徑。getcwd()函數用於得到當前進程的當前工作路徑。也就是相對路徑的起始點。
在Python中,可以使用os.chdir函數切換當前工作路徑。

當前工作路徑,是程序執行時所在的路徑。 我們在哪個目錄下執行程序,當前路徑就是哪一個目錄。

我們常常需要在python中執行一些源碼目錄下的文件。如,我們可能需要用eval動態執行一個python源文件。或者一些配置文件到目標系統的路徑下。此時,我們無法知道這些文件的絕對路徑,因為我們不能預知用戶會把我們的程序安裝到哪一個目錄下。
我們也不能依賴於當前工作路徑。因為用戶很可能不在我們的源碼目錄下執行我們的程序。

那麼,此時我們如何得到源碼目錄下文件的絕對路徑呢?
我是這樣做的:
ABSPATH=None

if __name__ == '__main__':

ABSPATH=os.path.abspath(sys.argv[0])
ABSPATH=os.path.dirname(ABSPATH)+"/"

print ABSPATH

④ python 文本文件中查找指定的字元串

編寫一個程序,能在當前目錄以及當前目錄的所有子目錄下查找文件名包含指定字元串的文件,並列印出絕對路徑。
import os
class SearchFile(object):

def __init__(self,path='.'):
self._path=path
self.abspath=os.path.abspath(self._path) # 默認當前目錄

def findfile(self,keyword,root):
filelist=[]
for root,dirs,files in os.walk(root):
for name in files:
fitfile=filelist.append(os.path.join(root, name))
#print(fitfile)
print(os.path.join(root, name))
#print(filelist)
print('...........................................')
for i in filelist:
if os.path.isfile(i):
#print(i)
if keyword in os.path.split(i)[1]:
print('yes!',i) # 絕對路徑
#else:
#print('......no keyword!')

def __call__(self):
while True:
workpath=input('Do you want to work under the current folder? Y/N:')
if(workpath == ''):
break
if workpath=='y' or workpath=='Y':
root=self.abspath # 把當前工作目錄作為工作目錄
print('當前工作目錄:',root)
dirlist=os.listdir() # 列出工作目錄下的文件和目錄
print(dirlist)
else:
root=input('please enter the working directory:')
print('當前工作目錄:',root)
keyword=input('the keyword you want to find:')
if(keyword==''):
break
self.findfile(keyword,root) # 查找帶指定字元的文件

if __name__ == '__main__':
search = SearchFile()
search()

⑤ python中怎樣轉到指定目錄

例如使用IDLE編譯python代碼時,可以使用os.chdir轉到指定目錄

import os.

os.getcwd() #get current work direction.

os.chdir('E:\Python_File\Test') #change direction.

在這之後可以直接調用』E:Python_FileTest』目錄下的函數。

或者用庫調用:

import osimport shutil.

alllist=os.listdir(u"D:\notes\python\資料\")for i in alllist:

aa,bb=i.split(".") if 'python' in aa.lower():

oldname= u"D:\notes\python\資料\"+aa+"."+bb.

newname=u"d:\\newname"+aa+"."+bb.

shutil.file(oldname,newname).

(5)abspathpython擴展閱讀:

Python中獲得當前目錄和上級目錄:

獲取當前文件的路徑:

from os import path
d = path.dirname(__file__) #返回當前文件所在的目錄 # __file__ 為當前文件, 若果在ide中運行此行會報錯,可改為 #d = path.dirname('.')。

獲得某個路徑的父級目錄:

parent_path = os.path.dirname(d) #獲得d所在的目錄,即d的父級目錄 parent_path = os.path.dirname(parent_path) ##獲得parent_path所在的目錄即parent_path的父級目錄。

獲得規范的絕對路徑:

abspath = path.abspath(d) #返回d所在目錄規范的絕對路徑。



⑥ python有哪些模塊

Python是一門非常高級的編程語言,內置了許多標准模塊,比如:sys、os、datetime等。

os模塊

os.getcwd() # 獲取當前工作目錄,即當前python腳本工作的目錄路徑

os.chdir("dirname") # 改變當前腳本工作目錄;相當於shell下cd

os.curdir # 返回當前目錄: ('.')

os.pardir # 獲取當前目錄的父目錄字元串名:('..')

os.makedirs('dirname1/dirname2') # 可生成多層遞歸目錄

os.removedirs('dirname1') # 若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,依此類推

os.mkdir('dirname') # 生成單級目錄;相當於shell中mkdir dirname

os.rmdir('dirname') # # 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當於shell中rmdir dirname

os.listdir('dirname') # 列出指定目錄下的所有文件和子目錄,包括隱藏文件,並以列表方式列印

os.remove() # 刪除一個文件

os.rename("oldname","newname") # 重命名文件/目錄

os.stat('path/filename') # 獲取文件/目錄信息

os.sep # 輸出操作系統特定的路徑分隔符,win下為"\",linux下為"/"

os.linesep # 輸出當前平台使用的行終止符,win下為" ",Linux下為" "

os.pathsep # 輸出用於分割文件路徑的字元串 win下為;,Linux下為:

os.name # 輸出字元串指示當前使用平台。win->'nt'; Linux->'posix'

os.system("bash command") # 運行shell命令,直接顯示

os.environ # 獲取系統環境變數

os.path.abspath(path) # 返回path規范化的絕對路徑

os.path.split(path) # 將path分割成目錄和文件名二元組返回

os.path.dirname(path) # 返回path的目錄。其實就是os.path.split(path)的第一個元素

os.path.basename(path) #
返回path最後的文件名。如何path以/或結尾,那麼就會返回空值。即os.path.split(path)的第二個元素

os.path.exists(path) # 如果path存在,返回True;如果path不存在,返回False

os.path.isabs(path) # 如果path是絕對路徑,返回True

os.path.isfile(path) # 如果path是一個存在的文件,返回True。否則返回False

os.path.isdir(path) # 如果path是一個存在的目錄,則返回True。否則返回False

os.path.join(path1[, path2[, ...]]) # 將多個路徑組合後返回,第一個絕對路徑之前的參數將被忽略

os.path.getatime(path) # 返回path所指向的文件或者目錄的最後訪問時間

os.path.getmtime(path) # 返回path所指向的文件或者目錄的最後修改時間

os.path.getsize(path) # 返回path的大小

sys模塊

sys.argv # 命令行參數List,第一個元素是程序本身路徑

sys.exit(n) # 退出程序,正常退出時exit(0)

sys.version # 獲取Python解釋程序的版本信息

sys.maxint # 最大的Int值

sys.path # 返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變數的值

sys.platform # 返回操作系統平台名稱

datetime模塊

datetime.today()返回一個表示當前本期日期時間的datetime對象

datetime.now([tz])返回指定時區日期時間的datetime對象,如果不指定tz參數則結果同上

datetime.utcnow()返回當前utc日期時間的datetime對象

datetime.fromtimestamp(timestamp[, tz])根據指定的時間戳創建一個datetime對象

datetime.utcfromtimestamp(timestamp)根據指定的時間戳創建一個datetime對象

datetime.strptime(date_str, format)將時間字元串轉換為datetime對象

⑦ python 怎麼查看當前路徑

先要裝載 os模塊:
import os

print os.getcwd()

或者
print os.path.abspath(os.curdir)

print os.path.abspath('.')
就可以了。

( . 代表當前的路徑,.. 代表當前路徑的上一級路徑。這在UNIX和Windows系統意義是類似的。
例如:
以Winodws系統為例:

當前路徑是F:\Temp, 則 . 的絕對路徑就是F:\Temp
.. 的絕對路徑就是F:\

)

要獲得上級目錄的路徑也很簡單,print os.path.abspath('..')就可以了。
要改變當前路徑,os.chdir(path) 就可以了 path里填要改變到的目錄,例如os.chdir('D:\Program Files')
這樣大部分的文件操作現在是相對於D:\Program Files 來了,例如fobj = open('Hello.txt'),實際會打開D:\Program Files\Hello.txt文件。

不要通過sys.argv[0]獲得當前路徑,那是不正確的。sys.argv[0] 是當前執行的Python腳本的文件名,不一定是當前的路徑。

希望對你有所幫助。

⑧ python 如何獲取某個文件的絕對地址

暈,假設你的文件名是filename
os.path.abspath(filename)得到的就是文件名的絕對地址

如果你相得到絕對目錄可以這樣子
os.path.abspath(os.path.dirname(filename))

⑨ Python其實很簡單 第十六章 目錄管理

為實現「按名存取」,必須建立文件名與輔存空間中物理地址的對應關系,體現這種對應關系的數據結構稱為文件目錄。文件目錄表目至少要包含文件名、文件的類型、文件的長度、訪問許可權、建立時間、訪問時間和文件存儲地址等內容。通過前面一章的介紹,我們已經知道在文件信息中已經包含了文件名、文件類型訪問許可權等信息,而存儲地址的信息則包含在目錄信息中。

16.1路徑

路徑通常用一個字元串來表示,可以按照路徑信息定位到一個目錄或文件。如:「C:UsersAdministratorPictures1.jpg」這個信息可以非常方便的找到這個圖片文件,「C:UsersAdministratorPictures」這個信息可以幫助我們找到更多的圖片文件。

這里所說的「路徑」和上網時碰到的「地址」含義比較相似,互聯網就相當於將個人電腦可以訪問的范圍擴大了,互聯網中的地址也是對應某一個存儲空間的路徑,按照地址可以訪問互聯網上的信息,就如同按照路徑可以找到計算機中的文件一樣。

在Python中,可以導入 os模塊 來進行目錄操作。

1、獲取當前工作目錄getcwd()函數

例:

import os

print(os.getcwd())

運行結果:

C:

這個路徑是當前Python IDLE所在的地址。

2、獲取文件的絕對路徑abspath()函數

abspath()函數是os模塊的子模塊path提供的一個函數。用法舉例如下:

import os

print(os.path.abspath(r'test.txt'))

運行結果:

C: est.txt


16.2 目錄操作類函數

1、判斷目錄是否存在exists()函數

exists()函數是os模塊的子模塊path中的函數。使用方法舉例如下:

import os

print(os.path.exists(r'C:UsersAdministratorPictures1.jpeg'))

輸出結果:

True

2、創建目錄mkdir()函數和makedirs()函數

mkdir()函數和makedirs()函數都是由os模塊提供的,下面舉例說明用法和區別。

例1:

import os

path='d:test'

if not os.path.exists(path):

os.makedirs(path)

print('該文件目錄創建成功!')

如果目錄d: est已存在,則不再創建;若不存在,則創建。

例2:

import os

path='d:testtest1test11'

if not os.path.exists(path):

os.makedirs(path)

print('該文件目錄創建成功!')

雖然目錄d: est已存在,但可以在其下繼續創建子目錄。上面的代碼可以成功地創建d: est est1 est11目錄。

mkdir()函數和makedirs()函數用法基本一樣,不同之處在於mkdir()函數只能能創建一級目錄。

3、刪除目錄函數rmdir()函數

rmdir()函數是由os模塊提供的。

例如:通過上面的例子已經建立了d: est est1 est11目錄,現在去刪除子目錄test11(此子目錄為空目錄),代碼如下:

import os

os.rmdir('d:testtest1test11')

如果要刪除的目錄非空(其下還包含有文件或文件夾),則不能刪除,並且出現Windows文件操作錯誤的提示(Python是調用操作系統命令完成文件和目錄操作的)。譬如d: est目錄下含有有子目錄,則不能對其進行如下刪除操作。

import os

os.rmdir('d:test')

此時,會出現如下錯誤提示:

Traceback (most recent call last):

File "C:/Users/zym/AppData/Local/Programs/Python/Python39/4.py", line 10, in

os.rmdir('d:test')

OSError: [WinError 145] 目錄不是空的。: 'd:test'


4、刪除非空目錄函數rmtree()函數

rmtree()函數是由Python內置的標准模塊shutil提供的,可以刪除目錄及目錄下的文件和子目錄。如刪除d: est目錄及其下的子目錄和文件,可用如下代碼:

import shutil

shutil.rmtree('d:test')

5、遍歷目錄walk()函數

walk()函數是由os模塊提供的。

語法格式:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

其中,top是所要遍歷的目錄的地址;topdown為可選參數,為 True時自上而下遍歷 目錄,為False時自下而上遍歷目錄,默認值為True;onerror為可選參數,用於指定異常處理方式,默認為忽略;followlinks為可選參數,如果為 True,則會遍歷目錄下的快捷方式(linux 下是軟連接 symbolic link )實際所指的目錄(默認關閉),如果為 False,則優先遍歷 top 的子目錄。

該函數的返回值為一個三元組(root,dirs,files)。root 所指的是當前正在遍歷的這個文件夾的本身的地址;dirs 是一個 list ,內容是該文件夾中所有的目錄的名字(不包括子目錄);files 同樣是 list , 內容是該文件夾中所有的文件(不包括子目錄)。

例:遍歷d: est目錄及其子目錄下的所有子目錄和文件:

d: est目錄及其下的子目錄和文件

import os

path='d:test'

tups=os.walk(path) # 函數walk()的返回值為三元組


for root,dirs,files in tups: # 遍歷這個三元組

for name in dirs: #遍歷存放目錄值的元組

print('dir:',os.path.join(root,name))

for name in files: #遍歷存放文件名值的元組

print('file:',os.path.join(root,name))


運行結果如下:

dir: d: est est1

dir: d: est est1 est11

dir: d: est est1新建文件夾

file: d: est est1新建文本文檔.txt

file: d: est est1 est11新建文本文檔.txt

⑩ python 獲取文件夾路徑問題

#encoding:utf-8
importos
printos.path.abspath("test")

使用os.path.abspath方法可以輸出文件夾的絕對路徑。

參數裡面要寫相對路徑,比如腳本和文件夾在同一路徑,就直接寫名字即可。如果文件夾在上一個目錄,就寫成"../test"。

其實從方法名也能看出來,是一個相對路徑轉絕對路徑的方法。

熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:528
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:25
linux485 發布:2025-07-05 14:38:28 瀏覽:305
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:756
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:433
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:707
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:243
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:688
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:285
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:835