亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 1519 0

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

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

文件操作:
os.mknod("test.txt")??????? 創建空文件
fp = open("test.txt",w)???? 直接打開一個文件,如果文件不存在則創建文件

關于open 模式:

w???? 以寫方式打開,
a???? 以追加模式打開 (從 EOF 開始, 必要時創建新文件)
r+???? 以讀寫模式打開
w+???? 以讀寫模式打開 (參見 w )
a+???? 以讀寫模式打開 (參見 a )
rb???? 以二進制讀模式打開
wb???? 以二進制寫模式打開 (參見 w )
ab???? 以二進制追加模式打開 (參見 a )
rb+??? 以二進制讀寫模式打開 (參見 r+ )
wb+??? 以二進制讀寫模式打開 (參見 w+ )
ab+??? 以二進制讀寫模式打開 (參見 a+ )

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

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

相關例子

1 將文件夾下所有圖片名稱加上'_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('.') #分割出文件與文件擴展名
    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是一個陷阱
    #或者
    #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('程序運行耗時:%0.2f'%(c))
print('總共處理了 %s 張圖片'%(i))
          

輸出結果:

程序運行耗時:0.11
總共處理了 109 張圖片

Python常見文件操作示例

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

??? 信息
??? getatime() 返回最近訪問時間
??? getctime() 返回文件創建時間
??? getmtime() 返回最近文件修改時間
??? getsize() 返回文件大小(以字節為單位)

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

??? shutil模塊對文件的操作:
??? 1.復制單個文件:shultil.copy(oldfile, newfle)

??? 2.復制整個目錄樹:shultil.copytree(r".\setup", r".\backup")

??? 3.刪除整個目錄樹:shultil.rmtree(r".\backup")

??? 臨時文件的操作:
??? 1.創建一個唯一的臨時文件:tempfile.mktemp() --> filename

??? 2.打開臨時文件:tempfile.TemporaryFile()

??? 內存文件(StringIO和cStringIO)操作
??? [4.StringIO] #cStringIO是StringIO模塊的快速實現模塊

??? 1.創建內存文件并寫入初始數據:f = StringIO.StringIO("Hello world!")
??? 2.讀入內存文件數據:print f.read() #或print f.getvalue() --> Hello world!
??? 3.想內存文件寫入數據:f.write("Good day!")
??? 4.關閉內存文件: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()
          

讀文件的寫法

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

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久久国产精品四虎 | 亚洲精品久久久久综合中文字幕 | 日韩欧美在线视频 | 七次郎在线成人精品 | 香蕉在线观看999 | 亚洲国产成人精彩精品 | 国产伦精品一区二区三区在线观看 | 国产精品视频在线播放 | 一级毛片直接看 | 国产成人精品一区二区三在线观看 | 欧美日韩国产另类一区二区三区 | 毛片免费观看久久欧美 | 九九热精品视频在线 | 亚洲一区二区三区四区五区 | 亚洲精品中文字幕乱码一区二区 | 毛片免费全部播放一级 | 成年女人毛片免费视频 | 天天干夜夜爽天天操夜夜爽视频 | 亚洲欧美精选 | 久草97| 色婷婷狠狠久久综合五月 | 亚洲视频精品 | 日本亚洲欧美 | 99热最新在线观看 | 欧美久久网 | 久久亚洲影院 | 欧美一区二区三区婷婷月色 | 深夜影院在线视频观看 | 精品国产免费一区二区三区五区 | 一级特级aa欧美毛片 | 日本在线不卡视频 | 精品国产一区二区三区www | 欧美日韩片 | 久青草视频在线观看 | 国产精品久久久久免费a∨ 国产精品久久久久免费视频 | 黄色在线视频网站 | 波多野一区二区三区在线 | 亚洲码在线中文在线观看 | 久久久久久久综合日本亚洲 | 欧美同房免姿势108费视频 | 亚洲 欧洲 自拍 另类 校园 |