欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 文件操作api(文件操作函數(shù))

 更新時(shí)間:2016年08月28日 13:38:24   投稿:mdxy-dxy  
總是記不住API。昨晚寫(xiě)的時(shí)候用到了這些,但是沒(méi)記住,于是就索性整理一下吧,方便需要的朋友

python中對(duì)文件、文件夾(文件操作函數(shù))的操作需要涉及到os模塊和shutil模塊。

得到當(dāng)前工作目錄,即當(dāng)前Python腳本工作的目錄路徑: os.getcwd()
返回指定目錄下的所有文件和目錄名:os.listdir()
函數(shù)用來(lái)刪除一個(gè)文件:os.remove()
刪除多個(gè)目錄:os.removedirs(r“c:\python”)
檢驗(yàn)給出的路徑是否是一個(gè)文件:os.path.isfile()
檢驗(yàn)給出的路徑是否是一個(gè)目錄:os.path.isdir()
判斷是否是絕對(duì)路徑:os.path.isabs()
檢驗(yàn)給出的路徑是否真地存:os.path.exists()
返回一個(gè)路徑的目錄名和文件名:os.path.split()     eg os.path.split('/home/swaroop/byte/code/poem.txt') 結(jié)果:('/home/swaroop/byte/code', 'poem.txt')
分離擴(kuò)展名:os.path.splitext()
獲取路徑名:os.path.dirname()
獲取文件名:os.path.basename()
運(yùn)行shell命令: os.system()
讀取和設(shè)置環(huán)境變量:os.getenv() 與os.putenv()
給出當(dāng)前平臺(tái)使用的行終止符:os.linesep    Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
指示你正在使用的平臺(tái):os.name       對(duì)于Windows,它是'nt',而對(duì)于Linux/Unix用戶(hù),它是'posix'
重命名:os.rename(old, new)
創(chuàng)建多級(jí)目錄:os.makedirs(r“c:\python\test”)
創(chuàng)建單個(gè)目錄:os.mkdir(“test”)
獲取文件屬性:os.stat(file)
修改文件權(quán)限與時(shí)間戳:os.chmod(file)
終止當(dāng)前進(jìn)程:os.exit()
獲取文件大?。簅s.path.getsize(filename)

文件操作:
os.mknod("test.txt")        創(chuàng)建空文件
fp = open("test.txt",w)     直接打開(kāi)一個(gè)文件,如果文件不存在則創(chuàng)建文件

關(guān)于open 模式:

w     以寫(xiě)方式打開(kāi),
a     以追加模式打開(kāi) (從 EOF 開(kāi)始, 必要時(shí)創(chuàng)建新文件)
r+     以讀寫(xiě)模式打開(kāi)
w+     以讀寫(xiě)模式打開(kāi) (參見(jiàn) w )
a+     以讀寫(xiě)模式打開(kāi) (參見(jiàn) a )
rb     以二進(jìn)制讀模式打開(kāi)
wb     以二進(jìn)制寫(xiě)模式打開(kāi) (參見(jiàn) w )
ab     以二進(jìn)制追加模式打開(kāi) (參見(jiàn) a )
rb+    以二進(jìn)制讀寫(xiě)模式打開(kāi) (參見(jiàn) r+ )
wb+    以二進(jìn)制讀寫(xiě)模式打開(kāi) (參見(jiàn) w+ )
ab+    以二進(jìn)制讀寫(xiě)模式打開(kāi) (參見(jiàn) a+ )

fp.read([size])                     #size為讀取的長(zhǎng)度,以byte為單位
fp.readline([size])                 #讀一行,如果定義了size,有可能返回的只是一行的一部分
fp.readlines([size])                #把文件每一行作為一個(gè)list的一個(gè)成員,并返回這個(gè)list。其實(shí)它的內(nèi)部是通過(guò)循環(huán)調(diào)用readline()來(lái)實(shí)現(xiàn)的。如果提供size參數(shù),size是表示讀取內(nèi)容的總長(zhǎng),也就是說(shuō)可能只讀到文件的一部分。
fp.write(str)                      #把str寫(xiě)到文件中,write()并不會(huì)在str后加上一個(gè)換行符
fp.writelines(seq)            #把seq的內(nèi)容全部寫(xiě)到文件中(多行一次性寫(xiě)入)。這個(gè)函數(shù)也只是忠實(shí)地寫(xiě)入,不會(huì)在每行后面加上任何東西。
fp.close()                        #關(guān)閉文件。python會(huì)在一個(gè)文件不用后自動(dòng)關(guān)閉文件,不過(guò)這一功能沒(méi)有保證,最好還是養(yǎng)成自己關(guān)閉的習(xí)慣。  如果一個(gè)文件在關(guān)閉后還對(duì)其進(jìn)行操作會(huì)產(chǎn)生ValueError
fp.flush()                                      #把緩沖區(qū)的內(nèi)容寫(xiě)入硬盤(pán)
fp.fileno()                                      #返回一個(gè)長(zhǎng)整型的”文件標(biāo)簽“
fp.isatty()                                      #文件是否是一個(gè)終端設(shè)備文件(unix系統(tǒng)中的)
fp.tell()                                         #返回文件操作標(biāo)記的當(dāng)前位置,以文件的開(kāi)頭為原點(diǎn)
fp.next()                                       #返回下一行,并將文件操作標(biāo)記位移到下一行。把一個(gè)file用于for … in file這樣的語(yǔ)句時(shí),就是調(diào)用next()函數(shù)來(lái)實(shí)現(xiàn)遍歷的。
fp.seek(offset[,whence])              #將文件打操作標(biāo)記移到offset的位置。這個(gè)offset一般是相對(duì)于文件的開(kāi)頭來(lái)計(jì)算的,一般為正數(shù)。但如果提供了whence參數(shù)就不一定了,whence可以為0表示從頭開(kāi)始計(jì)算,1表示以當(dāng)前位置為原點(diǎn)計(jì)算。2表示以文件末尾為原點(diǎn)進(jìn)行計(jì)算。需要注意,如果文件以a或a+的模式打開(kāi),每次進(jìn)行寫(xiě)操作時(shí),文件操作標(biāo)記會(huì)自動(dòng)返回到文件末尾。
fp.truncate([size])                       #把文件裁成規(guī)定的大小,默認(rèn)的是裁到當(dāng)前文件操作標(biāo)記的位置。如果size比文件的大小還要大,依據(jù)系統(tǒng)的不同可能是不改變文件,也可能是用0把文件補(bǔ)到相應(yīng)的大小,也可能是以一些隨機(jī)的內(nèi)容加上去。

目錄操作:
os.mkdir("file")                   創(chuàng)建目錄
復(fù)制文件:
shutil.copyfile("oldfile","newfile")       oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile")            oldfile只能是文件夾,newfile可以是文件,也可以是目標(biāo)目錄
復(fù)制文件夾:
shutil.copytree("olddir","newdir")        olddir和newdir都只能是目錄,且newdir必須不存在
重命名文件(目錄)
os.rename("oldname","newname")       文件或目錄都是使用這條命令
移動(dòng)文件(目錄)
shutil.move("oldpos","newpos")  
刪除文件
os.remove("file")
刪除目錄
os.rmdir("dir")只能刪除空目錄
shutil.rmtree("dir")    空目錄、有內(nèi)容的目錄都可以刪
轉(zhuǎn)換目錄
os.chdir("path")   換路徑

相關(guān)例子

1 將文件夾下所有圖片名稱(chēng)加上'_fc'

python代碼:

# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)分割字符串
#'連接符'.join(list) 將列表組成字符串
def change_name(path):
  global i
  if not os.path.isdir(path) and not os.path.isfile(path):
    return False
  if os.path.isfile(path):
    file_path = os.path.split(path) #分割出目錄與文件
    lists = file_path[1].split('.') #分割出文件與文件擴(kuò)展名
    file_ext = lists[-1] #取出后綴名(列表切片操作)
    img_ext = ['bmp','jpeg','gif','psd','png','jpg']
    if file_ext in img_ext:
      os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
      i+=1 #注意這里的i是一個(gè)陷阱
    #或者
    #img_ext = 'bmp|jpeg|gif|psd|png|jpg'
    #if file_ext in img_ext:
    #  print('ok---'+file_ext)
  elif os.path.isdir(path):
    for x in os.listdir(path):
      change_name(os.path.join(path,x)) #os.path.join()在路徑處理上很有用

img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print('程序運(yùn)行耗時(shí):%0.2f'%(c))
print('總共處理了 %s 張圖片'%(i))

輸出結(jié)果:

程序運(yùn)行耗時(shí):0.11
總共處理了 109 張圖片

Python常見(jiàn)文件操作示例

    os.path 模塊中的路徑名訪問(wèn)函數(shù)
    分隔
    basename() 去掉目錄路徑, 返回文件名
    dirname() 去掉文件名, 返回目錄路徑
    join() 將分離的各部分組合成一個(gè)路徑名
    split() 返回 (dirname(), basename()) 元組
    splitdrive() 返回 (drivename, pathname) 元組
    splitext() 返回 (filename, extension) 元組

    信息
    getatime() 返回最近訪問(wèn)時(shí)間
    getctime() 返回文件創(chuàng)建時(shí)間
    getmtime() 返回最近文件修改時(shí)間
    getsize() 返回文件大小(以字節(jié)為單位)

    查詢(xún)
    exists() 指定路徑(文件或目錄)是否存在
    isabs() 指定路徑是否為絕對(duì)路徑
    isdir() 指定路徑是否存在且為一個(gè)目錄
    isfile() 指定路徑是否存在且為一個(gè)文件
    islink() 指定路徑是否存在且為一個(gè)符號(hào)鏈接
    ismount() 指定路徑是否存在且為一個(gè)掛載點(diǎn)
    samefile() 兩個(gè)路徑名是否指向同個(gè)文件
   
    os.path.isdir(name):判斷name是不是一個(gè)目錄,name不是目錄就返回false
    os.path.isfile(name):判斷name是不是一個(gè)文件,不存在name也返回false
    os.path.exists(name):判斷是否存在文件或目錄name
    os.path.getsize(name):獲得文件大小,如果name是目錄返回0L
    os.path.abspath(name):獲得絕對(duì)路徑
    os.path.normpath(path):規(guī)范path字符串形式
    os.path.split(name):分割文件名與目錄(事實(shí)上,如果你完全使用目錄,它也會(huì)將最后一個(gè)目錄作為文件名而分離,同時(shí)它不會(huì)判斷文件或目錄是否存在)
    os.path.splitext():分離文件名與擴(kuò)展名
    os.path.join(path,name):連接目錄與文件名或目錄
    os.path.basename(path):返回文件名
    os.path.dirname(path):返回文件路徑
       
   
    os模塊中的文件操作:
    os 模塊屬性
    linesep 用于在文件中分隔行的字符串
    sep 用來(lái)分隔文件路徑名的字符串
    pathsep 用于分隔文件路徑的字符串
    curdir 當(dāng)前工作目錄的字符串名稱(chēng)
    pardir (當(dāng)前工作目錄的)父目錄字符串名稱(chēng)
   
    1.重命名:os.rename(old, new)
   
    2.刪除:os.remove(file)
    3.列出目錄下的文件:os.listdir(path)
    4.獲取當(dāng)前工作目錄:os.getcwd()
    5.改變工作目錄:os.chdir(newdir)
    6.創(chuàng)建多級(jí)目錄:os.makedirs(r"c:\python\test")
    7.創(chuàng)建單個(gè)目錄:os.mkdir("test")
    8.刪除多個(gè)目錄:os.removedirs(r"c:\python") #刪除所給路徑最后一個(gè)目錄下所有空目錄。
    9.刪除單個(gè)目錄:os.rmdir("test")
    10.獲取文件屬性:os.stat(file)
    11.修改文件權(quán)限與時(shí)間戳:os.chmod(file)
    12.執(zhí)行操作系統(tǒng)命令:os.system("dir")
    13.啟動(dòng)新進(jìn)程:os.exec(), os.execvp()
    14.在后臺(tái)執(zhí)行程序:osspawnv()
    15.終止當(dāng)前進(jìn)程:os.exit(), os._exit()
    16.分離文件名:os.path.split(r"c:\python\hello.py") --> ("c:\\python", "hello.py")
    17.分離擴(kuò)展名:os.path.splitext(r"c:\python\hello.py") --> ("c:\\python\\hello", ".py")
    18.獲取路徑名:os.path.dirname(r"c:\python\hello.py") --> "c:\\python"
    19.獲取文件名:os.path.basename(r"r:\python\hello.py") --> "hello.py"
    20.判斷文件是否存在:os.path.exists(r"c:\python\hello.py") --> True
    21.判斷是否是絕對(duì)路徑:os.path.isabs(r".\python\") --> False
    22.判斷是否是目錄:os.path.isdir(r"c:\python") --> True
    23.判斷是否是文件:os.path.isfile(r"c:\python\hello.py") --> True
    24.判斷是否是鏈接文件:os.path.islink(r"c:\python\hello.py") --> False
    25.獲取文件大?。簅s.path.getsize(filename)
    26.*******:os.ismount("c:\\") --> True
    27.搜索目錄下的所有文件:os.path.walk()

    shutil模塊對(duì)文件的操作:
    1.復(fù)制單個(gè)文件:shultil.copy(oldfile, newfle)

    2.復(fù)制整個(gè)目錄樹(shù):shultil.copytree(r".\setup", r".\backup")

    3.刪除整個(gè)目錄樹(shù):shultil.rmtree(r".\backup")

    臨時(shí)文件的操作:
    1.創(chuàng)建一個(gè)唯一的臨時(shí)文件:tempfile.mktemp() --> filename

    2.打開(kāi)臨時(shí)文件:tempfile.TemporaryFile()

    內(nèi)存文件(StringIO和cStringIO)操作
    [4.StringIO] #cStringIO是StringIO模塊的快速實(shí)現(xiàn)模塊

    1.創(chuàng)建內(nèi)存文件并寫(xiě)入初始數(shù)據(jù):f = StringIO.StringIO("Hello world!")
    2.讀入內(nèi)存文件數(shù)據(jù):print f.read() #或print f.getvalue() --> Hello world!
    3.想內(nèi)存文件寫(xiě)入數(shù)據(jù):f.write("Good day!")
    4.關(guān)閉內(nèi)存文件:f.close()

import os
import os.path
import unittest
import time
#import pygame

class PyFileCommonOperatorTest(unittest.TestCase):
  def __init__(self):
    """constructor"""
  
  def test01(self):
    print os.linesep
    print os.sep
    print os.pathsep
    print os.curdir
    print os.pardir
    print os.getcwd()
    print 'unittest here'


if __name__ == "__main__":
  t = PyFileCommonOperatorTest()
  t.test01()

讀文件的寫(xiě)法

#讀文件的寫(xiě)法:
#讀文本文件: 
input = open('data', 'r')#第二個(gè)參數(shù)是默認(rèn)的,可以不加
#讀二進(jìn)制文件: 
input = open('data', 'rb')
#讀取所有文件內(nèi)容:
open('xxoo.txt').read()
#讀取固定字節(jié)
open('abinfile', 'rb').read(100)
#讀每行
file_object.readlines()

相關(guān)文章

  • Python實(shí)現(xiàn)識(shí)別圖像中人物的示例代碼

    Python實(shí)現(xiàn)識(shí)別圖像中人物的示例代碼

    這篇文章主要介紹了通過(guò)face_recognition提供的demo代碼,簡(jiǎn)單調(diào)整了一下,從而實(shí)現(xiàn)識(shí)別圖像中人物的功能,感興趣的可以跟隨小編一起試試
    2022-01-01
  • Pyspider中給爬蟲(chóng)偽造隨機(jī)請(qǐng)求頭的實(shí)例

    Pyspider中給爬蟲(chóng)偽造隨機(jī)請(qǐng)求頭的實(shí)例

    今天小編就為大家分享一篇Pyspider中給爬蟲(chóng)偽造隨機(jī)請(qǐng)求頭的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Django使用httpresponse返回用戶(hù)頭像實(shí)例代碼

    Django使用httpresponse返回用戶(hù)頭像實(shí)例代碼

    這篇文章主要介紹了Django使用httpresponse返回用戶(hù)頭像實(shí)例代碼
    2018-01-01
  • ubuntu16.04升級(jí)Python3.5到Python3.7的方法步驟

    ubuntu16.04升級(jí)Python3.5到Python3.7的方法步驟

    這篇文章主要介紹了ubuntu16.04升級(jí)Python3.5到Python3.7的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python流行ORM框架sqlalchemy的簡(jiǎn)單使用

    Python流行ORM框架sqlalchemy的簡(jiǎn)單使用

    這篇文章主要介紹了Python流行ORM框架sqlalchemy的簡(jiǎn)單使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • python 文件操作刪除某行的實(shí)例

    python 文件操作刪除某行的實(shí)例

    下面小編就為大家?guī)?lái)一篇python 文件操作刪除某行的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 淺析python redis的連接及相關(guān)操作

    淺析python redis的連接及相關(guān)操作

    Redis是一個(gè)開(kāi)源的使用ANSIC語(yǔ)言編寫(xiě)、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API。這篇文章主要介紹了python redis的連接及相關(guān)操作,需要的朋友可以參考下
    2019-11-11
  • 基于DATAFRAME中元素的讀取與修改方法

    基于DATAFRAME中元素的讀取與修改方法

    今天小編就為大家分享一篇基于DATAFRAME中元素的讀取與修改方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python基于Tkinter開(kāi)發(fā)一個(gè)爬取B站直播彈幕的工具

    Python基于Tkinter開(kāi)發(fā)一個(gè)爬取B站直播彈幕的工具

    這篇文章主要介紹了Python Tkinter如何開(kāi)發(fā)一個(gè)爬取B站直播彈幕的工具,幫助大家更好的利用python進(jìn)行圖形界面的開(kāi)發(fā)學(xué)習(xí),感興趣的朋友可以了解下
    2021-05-05
  • 深入理解Python分布式爬蟲(chóng)原理

    深入理解Python分布式爬蟲(chóng)原理

    本篇文章主要介紹了深入理解Python分布式爬蟲(chóng)原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11

最新評(píng)論