九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Python文件目錄操作就是這么6

嘈嘈切切錯(cuò)雜彈,大珠小珠落玉盤。

/前言/

   對(duì)于學(xué)Python的人來說想必大家os這個(gè)模塊不會(huì)陌生,還有一個(gè)與之緊密相關(guān)的便是sys,但是sys一般很少用,所以今天我們就來說說這兩個(gè)模塊到底有哪些神器的功能。

/sys/

sys模塊包括了一組非常實(shí)用的服務(wù),內(nèi)含很多函數(shù)方法和變量,

用來處理Python運(yùn)行時(shí)配置以及資源,從而可以與前當(dāng)程序之外的系統(tǒng)環(huán)境交互。

也就是說他是一個(gè)很有用的模塊,只是我們平時(shí)很少用到而已。

#命令行參數(shù)List,第一個(gè)元素是程序本身路徑sys.argv  
#返回系統(tǒng)導(dǎo)入的模塊字段,key是模塊名,value是模塊sys.modules
#退出程序,正常退出時(shí)exit(0)sys.exit(n)
#返回模塊的搜索路徑,初始化時(shí)使用PYTHONPATH環(huán)境變量的值sys.path
#標(biāo)準(zhǔn)輸出sys.stdout.write('output')
#標(biāo)準(zhǔn)輸入sys.stdin.readline()[:-1]
#返回所有已經(jīng)導(dǎo)入的模塊名sys.modules.keys()
#返回所有已經(jīng)導(dǎo)入的模塊sys.modules.values()
#獲取當(dāng)前正在處理的異常類,exc_type、exc_value、exc_traceback當(dāng)前處理的異常詳細(xì)信息sys.exc_info()

#獲取Python解釋程序的版本值,16進(jìn)制格式如:0x020403F0sys.hexversion
#獲取Python解釋程序的版本sys.version
#解釋器的C的API版本sys.api_version
#解釋器版本信息 返回major=3, minor=6, micro=6, releaselevel='final', serial=0#'final’表示最終,也有’candidate’表示候選,serial表示版本級(jí)別,是否有后繼的發(fā)行sys.version_info
#如果value非空,這個(gè)函數(shù)會(huì)把他輸出到sys.stdout,并且將他保存進(jìn)__builtin__._.指在python的交互式解釋器里,’_’ 代表上次你輸入得到的結(jié)果,hook是鉤子的意思,將上次的結(jié)果鉤過來sys.displayhook(value)

#打印出給定的回溯和異常sys.stderr。sys.excepthook(type,value,callback)
#返回當(dāng)前你所用的默認(rèn)的字符編碼格式sys.getdefaultencoding()
#返回將Unicode文件名轉(zhuǎn)換成系統(tǒng)文件名的編碼的名字sys.getfilesystemencoding()
#用來設(shè)置當(dāng)前默認(rèn)的字符編碼,如果name和任何一個(gè)可用的編碼都不匹配,拋出 LookupError,這個(gè)函數(shù)只會(huì)被site模塊的sitecustomize使用,一旦別site模塊使用了,他會(huì)從sys模塊移除sys.setdefaultencoding(name)
#Python解釋器導(dǎo)入的模塊列表sys.builtin_module_names
#Python解釋程序路徑sys.executable
#獲取Windows的版本sys.getwindowsversion()
#記錄python版權(quán)相關(guān)的東西sys.copyright
#本地字節(jié)規(guī)則的指示器,big-endian平臺(tái)的值是’big’,little-endian平臺(tái)的值是’little’sys.byteorder
#用來清除當(dāng)前線程所出現(xiàn)的當(dāng)前的或最近的錯(cuò)誤信息sys.exc_clear()
#返回平臺(tái)獨(dú)立的python文件安裝的位置sys.exec_prefix
#錯(cuò)誤輸出sys.stderr
#標(biāo)準(zhǔn)輸入sys.stdin
#標(biāo)準(zhǔn)輸出sys.stdout
#返回操作系統(tǒng)平臺(tái)名稱sys.platform
#最大的Unicode值sys.maxunicode
#最大的Int值sys.maxint
#呼叫func(*args),同時(shí)啟用跟蹤。跟蹤狀態(tài)被保存,然后恢復(fù)。#這是從調(diào)試器從檢查點(diǎn)調(diào)用,以遞歸調(diào)試其他一些代碼。sys.call_tracing(func,args )
#清除內(nèi)部類型緩存。類型緩存用于加速屬性和方法查找sys._clear_type_cache()
#返回一個(gè)字典,將每個(gè)線程的標(biāo)識(shí)符映射到調(diào)用該函數(shù)時(shí)該線程中當(dāng)前活動(dòng)的最頂層堆棧幀。sys._current_frames()
#指定Python DLL句柄的整數(shù)。sys.dllhandle #如果這是真的,Python將不會(huì)嘗試在源模塊的導(dǎo)入上編寫.pyc或.pyo文件。#此值最初設(shè)置為True或 False取決于-B命令行選項(xiàng)#和 PYTHONDONTWRITEBYTECODE 環(huán)境變量,但您可以自己設(shè)置它來控制字節(jié)碼文件的生成。sys.dont_write_bytecode
#獲取檢查間隔sys.getcheckinterval()
#返回用于dlopen()調(diào)用的標(biāo)志的當(dāng)前值。標(biāo)志常量在dl和DLFCN模塊中定義??捎眯裕篣nix。sys.getdlopenflags()
#返回對(duì)象的引用計(jì)數(shù)。返回的計(jì)數(shù)通常比您預(yù)期的高一個(gè),因?yàn)樗ㄅR時(shí))引用作為參數(shù)getrefcount()。sys.getrefcount(對(duì)象)
#以字節(jié)為單位返回對(duì)象的大小。對(duì)象可以是任何類型的對(duì)象。所有內(nèi)置對(duì)象都將返回正確的結(jié)果,但這不一定適用于第三方擴(kuò)展,因?yàn)樗翘囟ㄓ趯?shí)現(xiàn)的。#如果給定,則如果對(duì)象未提供檢索大小的方法,則將返回default。否則TypeError將被提出。#如果對(duì)象由垃圾收集器管理,則調(diào)用該對(duì)象的方法并添加額外的垃圾收集器開銷。sys.getsizeof(對(duì)象[,默認(rèn)] )
#從調(diào)用堆棧返回一個(gè)框架對(duì)象。如果給出了可選的整數(shù)深度,#則返回堆棧頂部下方多次調(diào)用的幀對(duì)象。如果它比調(diào)用堆棧更深,#ValueError則引發(fā)。深度的默認(rèn)值為零,返回調(diào)用堆棧頂部的幀。sys._getframe([ 深度] )
#獲取設(shè)置的探查器功能setprofile()。sys.getprofile()
#獲取設(shè)置的跟蹤功能settrace()。sys.gettrace()
#返回一個(gè)描述當(dāng)前正在運(yùn)行的Windows版本的命名元組sys.getwindowsversion()

看到這么多方法大家是不是已經(jīng)哭暈在廁所里了了,不著急,

小編在這里先給大家一個(gè)練手的好案例讓大家開開葷:

那么這個(gè)案例實(shí)現(xiàn)的是什么功能了,大致就是每隔一秒打印一個(gè)#,好像進(jìn)度條一樣的說。

在這里就用到標(biāo)準(zhǔn)輸出流和輸出流刷新了,也算是超級(jí)簡(jiǎn)單的進(jìn)度條了。

sys里面有幾個(gè)可以表示腳本當(dāng)前路徑的函數(shù),可以說是非常強(qiáng)大了,比如說:

大家可以看到,后面兩個(gè)結(jié)果相同,說明后面兩個(gè)效果一樣嗎,那可不一定。

不信,你可以看看我接下來的操作,讓你懷疑人生:

創(chuàng)建兩個(gè)py文件,你懂的,然后分別鍵入代碼:

#cg.pyimport sysdef ff():    print(sys.path[0],':',sys.argv[0],':',__file__)     #sys.argv[0] 一般得到的是相對(duì)路徑ff()
#fd.pyimport cgcg.ff()

可以看到,最后的結(jié)果就是顯然不一樣了,那么這是什么原因產(chǎn)生的了,哦,

原來,在fd中導(dǎo)入cg執(zhí)行的sys.argv[0]還是指的是運(yùn)行的主文件fd.py,而file卻輸出的是cg.py.

順便跟大家科普以下查看模塊下有哪些方法的一個(gè)函數(shù):dir()

所有的函數(shù)都打印出來了,當(dāng)然,如果你想快速了解每個(gè)方法的用法,則可以使用help()函數(shù):

可以說是很強(qiáng)大了。

接下來我們?cè)賮碚f說另一個(gè)非常牛逼的東西---------os。

/OS/

一、文件操作(os直屬常用方法)

# 關(guān)閉文件描述符 hwos.close(hw)  
# 關(guān)閉所有文件描述符,從 hw1(包含) 到 hw2(不包含), 錯(cuò)誤會(huì)忽略os.closerange(hw1,hw2)
# 通過文件描述符改變當(dāng)前工作目錄os.fchdir(hw)
# 改變一個(gè)文件的訪問權(quán)限,該文件由參數(shù)hw指定,參數(shù)mode是Unix下的文件訪問權(quán)限。os.fchmod(hw, mode)
# 修改一個(gè)文件的所有權(quán),這個(gè)函數(shù)修改一個(gè)文件的用戶ID和用戶組ID,該文件由文件描述符hw指定。os.fchown(hw, id1, id2)
# 強(qiáng)制將文件寫入磁盤,該文件由文件描述符hw指定,但是不強(qiáng)制更新文件的狀態(tài)信息。os.fdatasync(hw)
#通過文件描述符hw 創(chuàng)建一個(gè)文件對(duì)象,并返回這個(gè)文件對(duì)象os.fdopen(hw[, mode[, bufsize]])
#返回一個(gè)打開的文件的系統(tǒng)配置信息。name為檢索的系統(tǒng)配置的值,#它也許是一個(gè)定義系統(tǒng)值的字符串,這些名字在很多標(biāo)準(zhǔn)中指定(POSIX.1, Unix 95, Unix 98, 和其它)。os.fpathconf(hw, name)
#返回文件描述符hw的狀態(tài),像stat()。os.fstat(hw)
#返回包含文件描述符hw的文件的文件系統(tǒng)的信息,像 statvfs()os.fstatvfs(hw)
#強(qiáng)制將文件描述符為hw的文件寫入硬盤。os.fsync(hw)
#裁剪文件描述符hw對(duì)應(yīng)的文件, 所以它最大不能超過文件大小。os.ftruncate(hw,length)
#復(fù)制文件描述符hwos.dup(hw)
# 將一個(gè)文件描述符hw復(fù)制到另一個(gè)hw1os.dup2(hw,hw1)
# 返回與終端hw(一個(gè)由os.open()返回的打開的文件描述符)關(guān)聯(lián)的進(jìn)程組os.tcgetpgrp(hw)
# 設(shè)置與終端hw(一個(gè)由os.open()返回的打開的文件描述符)關(guān)聯(lián)的進(jìn)程組為hw1。os.tcsetpgrp(hw, hw1)
# 返回唯一的路徑名用于創(chuàng)建臨時(shí)文件。os.tempnam([dir[, prefix]])
# 返回一個(gè)打開的模式為(w+b)的文件對(duì)象 .這文件對(duì)象沒有文件夾入口,沒有文件描述符,將會(huì)自動(dòng)刪除。os.tmpfile()
# 為創(chuàng)建一個(gè)臨時(shí)文件返回一個(gè)唯一的路徑os.tmpnam()
# 返回一個(gè)字符串,它表示與文件描述符hw 關(guān)聯(lián)的終端設(shè)備。如果hw 沒有與終端設(shè)備關(guān)聯(lián),則引發(fā)一個(gè)異常。os.ttyname(hw)
# 刪除文件路徑os.unlink(path)
# 返回指定的path文件的訪問和修改的時(shí)間。os.utime(path, times)
# 輸出在文件夾中的文件名通過在樹中游走,向上或者向下。os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
# 寫入字符串到文件描述符hw中. 返回實(shí)際寫入的字符串長(zhǎng)度os.write(hw, str)
# 獲取指定路徑的文件系統(tǒng)統(tǒng)計(jì)信息os.statvfs(path)
# 返回當(dāng)前工作目錄os.getcwd()
# 返回一個(gè)當(dāng)前工作目錄的Unicode對(duì)象os.getcwdu()
# 如果文件描述符hw是打開的,同時(shí)與tty(-like)設(shè)備相連,則返回true, 否則False。os.isatty(hw)
# 設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記,類似 chflags(),但是沒有軟鏈接os.lchflags(path, flags)
# 修改連接文件權(quán)限os.lchmod(path, mode)
# 更改文件所有者,類似 chown,但是不追蹤鏈接。os.lchown(path, uid, gid)
# 返回path指定的文件夾包含的文件或文件夾的名字的列表。os.listdir(path)
# 設(shè)置文件描述符 fd當(dāng)前位置為pos, how方式修改: SEEK_SET 或者 0 #設(shè)置從文件開始的計(jì)算的pos; SEEK_CUR或者 1 則從當(dāng)前位置計(jì)算; #os.SEEK_END或者2則從文件尾部開始. 在unix,Windows中有效os.lseek(fd, pos, how)
# 打開一個(gè)文件,并且設(shè)置需要的打開選項(xiàng),mode參數(shù)是可選的os.open(file, flags[, mode])
# 打開一個(gè)新的偽終端對(duì)。返回 pty 和 tty的文件描述符。os.openpty()
# 返回相關(guān)文件的系統(tǒng)配置信息。os.pathconf(path, name)
# 用于分割文件路徑的字符串os.pathsep
# 獲取當(dāng)前目錄的父目錄字符串名:('..')os.pardir
# 創(chuàng)建一個(gè)管道. 返回一對(duì)文件描述符(r, w) 分別為讀和寫os.pipe()
# 從一個(gè) command 打開一個(gè)管道os.popen(command[, mode[, bufsize]])
# 字符串指示當(dāng)前使用平臺(tái)。win->'nt'; Linux->'posix'os.name
# 從文件描述符hw中讀取最多n個(gè)字節(jié),返回包含讀取字節(jié)的字符串,#文件描述符hw對(duì)應(yīng)文件已達(dá)到結(jié)尾, 返回一個(gè)空字符串。os.read(hw, n)
#返回路徑所在的根目錄,主目錄主文件os.walk(path)
#返回路徑下的目錄和文件os.listdir(path)
#切換當(dāng)前程序操作的路徑os.chdir(path)
#重命名文件os.rename(oldfile,newfile)

二、路徑操作

#將文件路徑和文件名分割(會(huì)將最后一個(gè)目錄作為文件名而分離)os.path.split(filename)
#將文件路徑和文件擴(kuò)展名分割成一個(gè)元組os.path.splitext(filename)
#返回文件路徑的目錄部分os.path.dirname(filename)
#返回文件路徑的文件名部分os.path.basename(filename)
#將文件路徑和文件名湊成完整文件路徑os.path.join(dirname,basename)
#獲得絕對(duì)路徑os.path.abspath(name)
#把路徑分割為掛載點(diǎn)和文件名os.path.splitunc(path)
#規(guī)范path字符串形式os.path.normpath(path)
#判斷文件或目錄是否存在os.path.exists()
#如果path是絕對(duì)路徑,返回Trueos.path.isabs()
#返回path的真實(shí)路徑os.path.realpath(path)
#從start開始計(jì)算相對(duì)路徑os.path.relpath(path[, start])
#轉(zhuǎn)換path的大小寫和斜杠os.path.normcase(path)
#判斷name是不是一個(gè)目錄,name不是目錄就返回falseos.path.isdir()
#判斷name是不是一個(gè)文件,不存在返回falseos.path.isfile()
#判斷文件是否連接文件,返回booleanos.path.islink()
#指定路徑是否存在且為一個(gè)掛載點(diǎn),返回booleanos.path.ismount()
#是否相同路徑的文件,返回booleanos.path.samefile()
#返回最近訪問時(shí)間 浮點(diǎn)型os.path.getatime()
#返回上一次修改時(shí)間 浮點(diǎn)型os.path.getmtime()
#返回文件創(chuàng)建時(shí)間 浮點(diǎn)型os.path.getctime()
#返回文件大小 字節(jié)單位os.path.getsize()
#返回list(多個(gè)路徑)中,所有path共有的最長(zhǎng)的路徑os.path.commonprefix(list)
#路徑存在則返回True,路徑損壞也返回Trueos.path.lexists
#把path中包含的”~”和”~user”轉(zhuǎn)換成用戶目錄os.path.expanduser(path)
#根據(jù)環(huán)境變量的值替換path中包含的”$name”和”${name}”os.path.expandvars(path)
#判斷fp1和fp2是否指向同一文件os.path.sameopenfile(fp1, fp2)
#判斷stat tuple stat1和stat2是否指向同一個(gè)文件os.path.samestat(stat1, stat2)
#一般用在windows下,返回驅(qū)動(dòng)器名和路徑組成的元組os.path.splitdrive(path)
#遍歷path,給每個(gè)path執(zhí)行一個(gè)函數(shù)os.path.walk(path, visit, arg)
#設(shè)置是否支持unicode路徑名os.path.supports_unicode_filenames()

三、進(jìn)程管理

# 創(chuàng)建一個(gè)軟鏈接os.symlink(src, dst)     
# 創(chuàng)建硬鏈接,名為參數(shù) dst,指向參數(shù) srcos.link(src, dst)
# 像stat(),但是沒有軟鏈接os.lstat(path)

# 運(yùn)行shell命令,直接顯示os.system("bash command")
# 改變當(dāng)前進(jìn)程的根目錄os.chroot(path)
#shell命令,不返回結(jié)果,但是可以進(jìn)行讀取os.popen(command).read()
# 當(dāng)前平臺(tái)使用的行終止符,win下為"\t\n",Linux下為"\n"os.linesep
#路徑連接符os.sep
#從原始的設(shè)備號(hào)中提取設(shè)備major號(hào)碼 (使用stat中的st_dev或者st_rdev field)。os.major(device)
# 以majorminor設(shè)備號(hào)組成一個(gè)原始設(shè)備號(hào)os.makedev(major, minor)
# 遞歸文件夾創(chuàng)建函數(shù)。像mkdir(),但創(chuàng)建的所有intermediate-level文件夾需要包含子文件夾。os.makedirs(path[, mode])
# 從原始的設(shè)備號(hào)中提取設(shè)備minor號(hào)碼(使用stat中的st_dev或者st_rdev field )。os.minor(device)
# 以數(shù)字modemode創(chuàng)建一個(gè)名為path的文件夾.默認(rèn)的 mode 是 0777 (八進(jìn)制)。os.mkdir(path[, mode])
# 創(chuàng)建命名管道,mode 為數(shù)字,默認(rèn)為 0666 (八進(jìn)制)os.mkfifo(path[, mode])
# 創(chuàng)建一個(gè)名為filename文件系統(tǒng)節(jié)點(diǎn)(文件,設(shè)備特別文件或者命名pipe)。os.mknod(filename[, mode=0600, device])

四、環(huán)境參數(shù)

#檢驗(yàn)權(quán)限模式 os.access(path, mode) 
# 設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記。os.chflags(path, flags)
# 更改權(quán)限os.chmod(path, mode)
# 更改文件所有者os.chown(path, uid, gid)
#獲得當(dāng)前系統(tǒng)登陸用戶名os.getlogin()
#獲得當(dāng)前系統(tǒng)的CPU數(shù)量os.cpu_count()
# 獲得n個(gè)字節(jié)長(zhǎng)度的隨機(jī)字符串,通常用于加解密運(yùn)算os.urandom(n)
# 獲取系統(tǒng)所有環(huán)境變量os.environ
#獲取某個(gè)特定的環(huán)境變量的值os.getenv('CYGWIN')os.environ.get('CYGWIN')
#設(shè)置環(huán)境變量os.environ.setdefault(key,value)
#獲取某個(gè)特定的環(huán)境變量的值的byte形式os.getenvb('CYGWIN')

五、stat子庫(kù)

#獲取到的文件屬性列表fileStats = os.stat(path) 
#獲取文件的模式fileStats[stat.ST_MODE]
#文件大小fileStats[stat.ST_SIZE]
#文件最后修改時(shí)間fileStats[stat.ST_MTIME]
#文件最后訪問時(shí)間fileStats[stat.ST_ATIME]
#文件創(chuàng)建時(shí)間fileStats[stat.ST_CTIME]
#是否目錄stat.S_ISDIR(fileStats[stat.ST_MODE])
#是否一般文件stat.S_ISREG(fileStats[stat.ST_MODE])
#是否連接文件stat.S_ISLNK(fileStats[stat.ST_MODE])
#是否COCK文件stat.S_ISSOCK(fileStats[stat.ST_MODE])
#是否命名管道stat.S_ISFIFO(fileStats[stat.ST_MODE])
#是否塊設(shè)備stat.S_ISBLK(fileStats[stat.ST_MODE])
#是否字符設(shè)置stat.S_ISCHR(fileStats[stat.ST_MODE])

6、一鍵死機(jī)

為什么要說這個(gè)呢?完全是為了好玩,哈哈哈。

我們都知道os 能很輕松打開一個(gè)程序,只要你知道這個(gè)源程序根目錄的位置。

所以我們一般都會(huì):

os.system('notepad')  #打開記事本os.system('start notepad')#打開記事本

這樣可以很輕松打開一個(gè)記事本,那么我們要想讓它無限打開。我給它整個(gè)死循環(huán),給它個(gè)無限遞歸不就完了。是不是很簡(jiǎn)單了?

還有一種比較優(yōu)雅的打開程序的方法,那就是popen方法:

pp=os.popen('notebook')

不僅如此,我們還能看到它執(zhí)行結(jié)果后的返回值。

print(pp.read())

哈哈,也是很666了。

/小結(jié)/

1、本文基于Python編程語(yǔ)言,主要介紹了Python操作文件目錄的兩個(gè)大庫(kù)sys和os,在實(shí)際應(yīng)用中十分的常用,希望大家了解。本文內(nèi)容十分豐富,歡迎大家積極學(xué)習(xí)。

2、結(jié)合部分實(shí)際案例,圖文并茂,幫助大家更好的理解文件操作。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python學(xué)習(xí)
python中os模塊用法
Python3 OS 文件/目錄方法
python獲取程序執(zhí)行文件路徑方法
python調(diào)用dll時(shí)路徑問題_python調(diào)用dll時(shí)路徑問題_Python import .pyd 可能遇到路徑的問題
Python之文件
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服