python 中檔案輸入輸出及os模組對檔案系統的操作

來源:互聯網
上載者:User

整理了一下python 中檔案的輸入輸出及主要介紹一些os模組中對檔案系統的操作。

檔案輸入輸出

1、內建函數open(file_name,檔案開啟模式,通用分行符號支援),開啟檔案返迴文件對象。

2、對開啟檔案進行讀取時,readline()readlines()的區別在於是否一次性的讀取所有的內容,並將每行的資訊作為列表中的一個子項。
例如:檔案test.txt中

  1,3,4  2,35,6

分別用readline與readlines對其進行讀取

r=file_object.readline();#結果為1,3,4r=file_object.readlines();#結果為['1,3,4\n', '2,35,6']

3、檔案迭代
使用迭代器的file.next()用於讀取檔案的下一行。相比for迴圈,更複雜,一般採用 for迴圈直接迭代。

4、檔案移動
seek(off,whence=0)可以在檔案中移動檔案指標到不同的位置,,從檔案中移動off個操作標記(檔案指標),正往結束方向移動,負往開始方向移動。如果設定了whence參數,就以whence設定的起始位為準,0代表從頭開始,1代表當前位置,2代表檔案最末尾位置。
tell()可以展示 我們的移動過程,展示我們的當前位置

5、os模組

6、檔案寫入f.write()writelines()接受一個字串列表作為參數
需要手動輸入分行符號\n;

fobj=open('test','w');#直接在指定路徑下開啟test1 ,如果沒有則直接產生,但若存在,則出錯;fobj.write('foo\n');fobj.write('bar\n');fobj.close();#結果為#foo#bar
import os;file_object=open(r'E:\Python\iostream_test\test.txt','r+');aline=raw_input("Enter a line ('.'to quit):");if aline !=".":    file_object.write('%s%s' % (aline,os.linesep));#在檔案test.txt中寫入一條字串結果為txt 檔案中的一個內容
標準檔案

一般程式一執行,就可以訪問3個標準檔案,分別是標準輸入(一般是鍵盤)、標準輸出(到顯示器的緩衝輸出)和標準錯誤(到螢幕的非緩衝輸出),這裡的緩衝、非緩衝是指open()的三個參數。

檔案系統

對檔案系統的訪問大多通過python的os模組實現。該模組是python訪問作業系統功能的主要介面。

os除了對進程和進程運行環境進行管理外,os模組還負責處理大部分的檔案系統操作,包括刪除/重新命名檔案,遍曆分類樹,已經管理檔案存取權限等。

另一個os.path 模組可以完成針對路徑名的操作,它提供函數 完成管理和操作檔案路徑中的各個部分,擷取檔案或者子目錄資訊,檔案路徑查詢等操作。

針對os path的操作,操作對象E:\Python\iostream_test檔案及其下的test.txt檔案

os.path.exists(),檢測指定路徑的檔案或者目錄是否存在。

import os;for tempdir in ('/test.txt',r'E:\Python\iostream_test\test.txt'):  if os.path.exists(tempdir):      print 'yes';      break;else:    print 'no temp directory available';    tempdir=' ';#結果為yes,# 若in中改為('/test.txt',r'D:\Python\iostream_test\test.txt'),則結果為no temp directory available

os.path.isdir(),檢測指定了路徑是否存在且為一個目錄,只能是目錄,否則報錯。

import os;for tempdir in ('/test.txt',r'E:\Python\iostream_test\test.txt'): #in中檢測的是檔案,而非目錄,所以未輸出yes  if os.path.isdir(tempdir):      print 'yes';      break;else:    print 'no temp directory available';    tempdir=' ';# 輸出no temp directory available
import os;for tempdir in ('/test.txt',r'D:\Python\iostream_test\test.txt'):#指定路徑在D盤,因而不存在  if os.path.isdir(tempdir):      print 'yes';      break;else:    print 'no temp directory available';    tempdir=' ';
import os;for tempdir in ('/test.txt',r'E:\Python\iostream_test'): if os.path.isdir(tempdir):     print 'yes';     break;else:   print 'no temp directory available';   tempdir=' ';#輸出的是yes

同理可得os.path.isfile()只可檢測指定路徑是否存在且為一個檔案

以下針對os中某些進行練習,針對檔案的操作,因先檢測是否存在指定路徑,再對該路徑或者路徑中的檔案做操作。更多的練習可以看read.md

import os;for tempdir in ('/tmp',r'E:\Python\iostream_test'):  if os.path.isdir(tempdir):#檢測指定路徑是否存在且為一個目錄,並賦給tempdir      print 'yes';      break;else:    print 'no temp directory available';    tempdir=' ';if tempdir:    os.chdir(tempdir); #改變當前工作路徑    cwd=os.getcwd(); #擷取當前工作路徑;    print 'current temporany directory is :';    print cwd;    print os.listdir(cwd);        print 'creating example directory';    os.mkdir('example'); #在目前的目錄下建立一個新的檔案    os.chdir('example'); #改變目錄到example的檔案下    cwd=os.getcwd();#擷取example的檔案路徑    print 'new working directory:'    print cwd;    print ' original directory listing :'    print os.listdir(cwd);#列出(example)指定路徑下的檔案    os.chdir(tempdir);    cwd=os.getcwd();     print os.listdir(cwd);#列出(tempdir)指定路徑下的檔案# 結果為:# current temporany directory is :# E:\Python\iostream_test# ['pspathex.py', 'read.md', 'read.py', 'test.txt']# creating example directory# new working directory:# E:\Python\iostream_test\example#  original directory listing :# []# ['example', 'pspathex.py', 'read.md', 'read.py', 'test.txt']

os.path.join()方法將分離的各部分組合成一個路徑名

 path=os.path.join(cwd,os.listdir(cwd)[0]); print ' full file pathname:' print path; #結果為E:\Python\iostream_test\example\filetest.txt

os.path.split(path)方法將組合路徑分成(路徑名,檔案名稱)

path=os.path.join(cwd,os.listdir(cwd)[0]);print os.path.split(path);#(pathname,basename)#結果為('E:\\Python\\iostream_test\\example', 'filetest.txt')

os.path.splitext(os.path.basename(path))方法將檔案分成(檔案名稱,副檔名)

path=os.path.join(cwd,os.listdir(cwd)[0]);print os.path.splitext(os.path.basename(path));#(filename,extension)#結果為('filetest', '.txt')
相關模組

永久儲存模組,永久儲存資料:pickle 、marshal模組、DBM風格模組、shelve模組

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.