python之最強王者(10)———文件(File)、輸入輸出的基本操作

来源:http://www.cnblogs.com/wwyx-xi/archive/2016/09/25/5906443.html
-Advertisement-
Play Games

1. Python 文件I/O 本章只講述所有基本的的I/O函數,更多函數請參考Python標準文檔。 2.列印到屏幕 最簡單的輸出方法是用print語句,你可以給它傳遞零個或多個用逗號隔開的表達式。此函數把你傳遞的表達式轉換成一個字元串表達式,並將結果寫到標準輸出如下: 示例1: 運行示例1結果如 ...


1. Python 文件I/O
  本章只講述所有基本的的I/O函數,更多函數請參考Python標準文檔。

2.列印到屏幕
  最簡單的輸出方法是用print語句,你可以給它傳遞零個或多個用逗號隔開的表達式。此函數把你傳遞的表達式轉換成一個字元串表達式,並將結果寫到標準輸出如下:

示例1:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/25 15:12
# @Author  : wwyx
print "python 是一門面向對象語言"

運行示例1結果如下:

python 是一門面向對象語言

 

3.讀取鍵盤輸入
Python提供了兩個內置函數從標準輸入讀入一行文本,預設的標準輸入是鍵盤。如下:

  • raw_input
  • input

raw_input函數
  raw_input([prompt]) 函數從標準輸入讀取一個行,並返回一個字元串(去掉結尾的換行符):
  示例2:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/25 15:12
# @Author  : wwyx
strs = raw_input("請輸入你想輸入的字元串:")
print "您輸入的字元串是:",strs

示例2 運行結果:

請輸入你想輸入的字元串:python
您輸入的字元串是: python

input函數
  input([prompt]) 函數和 raw_input([prompt]) 函數基本類似,但是 input 可以接收一個Python表達式作為輸入,並將運算結果返回。

示例3:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/25 15:12
# @Author  : wwyx

inputStr = input("可以輸入表達式:")
print "運行輸入的結果:", inputStr

示例3 運行結果:

可以輸入表達式:[x*4 for x in (2,3,4)]
運行輸入的結果: [8, 12, 16]

 

4.打開和關閉文件
  現在,您已經可以向標準輸入和輸出進行讀寫。現在,來看看怎麼讀寫實際的數據文件。
  Python 提供了必要的函數和方法進行預設情況下的文件基本操作。你可以用 file 對象做大部分的文件操作。
open 函數
  你必須先用Python內置的open()函數打開一個文件,創建一個file對象,相關的方法才可以調用它進行讀寫。
語法:

file object = open(file_name [, access_mode][, buffering]

各個參數的細節如下:

  • file_name:file_name變數是一個包含了你要訪問的文件名稱的字元串值。
  • access_mode:access_mode決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數是非強制的,預設文件訪問模式為只讀(r)。
  • buffering:如果buffering的值被設為0,就不會有寄存。如果buffering的值取1,訪問文件時會寄存行。如果將buffering的值設為大於1的整數,表明瞭這就是的寄存區的緩衝大小。如果取負值,寄存區的緩衝大小則為系統預設。

不同模式打開文件的完全列表:
  模式 描述

  1. r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是預設模式。
  2. rb 以二進位格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是預設模式。
  3. r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。
  4. rb+ 以二進位格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。
  5. w 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
  6. wb 以二進位格式打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
  7. w+ 打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
  8. wb+ 以二進位格式打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
  9. a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
  10. ab 以二進位格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
  11. a+ 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
  12. ab+ 以二進位格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。

File對象的屬性
  一個文件被打開後,你有一個file對象,你可以得到有關該文件的各種信息。
  以下是和file對象相關的所有屬性的列表:
  屬性 描述

  • file.closed 返回true如果文件已被關閉,否則返回false。
  • file.mode 返回被打開文件的訪問模式。
  • file.name 返迴文件的名稱。
  • file.softspace 如果用print輸出後,必須跟一個空格符,則返回0。否則返回1。

示例4

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/25 15:12
# @Author  : wwyx
filetest = open("file.txt", "wb")

print "文件是否關閉:", filetest.closed
print "文件模式:", filetest.mode
print "文件名稱:", filetest.name
print "是否強制在末尾加空格:", filetest.softspace

示例4 運行結果:

文件是否關閉: False
文件模式: wb
文件名稱: file.txt
是否強制在末尾加空格: 0

close()方法
  File 對象的 close()方法刷新緩衝區里任何還沒寫入的信息,並關閉該文件,這之後便不能再進行寫入。
  當一個文件對象的引用被重新指定給另一個文件時,Python 會關閉之前的文件。用 close()方法關閉文件是一個很好的習慣。
  語法:

fileObject.close();

示例5

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/25 15:12
# @Author  : wwyx
filetest = open("file.txt", "wb")

print "文件是否關閉:", filetest.closed
print "文件模式:", filetest.mode
print "文件名稱:", filetest.name
print "是否強制在末尾加空格:", filetest.softspace
print "關閉文件!"
filetest.close()  # 關閉文件
print "文件關閉成功!"

示例5 結果:

文件是否關閉: False
文件模式: wb
文件名稱: file.txt
是否強制在末尾加空格: 0
關閉文件!
文件關閉成功!

 

5.讀寫文件
  file對象提供了一系列方法,能讓我們的文件訪問更輕鬆。來看看如何使用read()和write()方法來讀取和寫入文件。
  write()方法
  write()方法可將任何字元串寫入一個打開的文件。需要重點註意的是,Python字元串可以是二進位數據,而不是僅僅是文字。
  write()方法不會在字元串的結尾添加換行符('\n'):
  語法:

fileObject.write(string);

在這裡,被傳遞的參數是要寫入到已打開文件的內容。
 示例6

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/25 15:12
# @Author  : wwyx
filetest = open("file.txt", "wb")
filetest.write("python 編程語言可以用到很多地方")
print "關閉文件!"
filetest.close()  # 關閉文件
print "文件關閉成功!"
print "重新打開讀取文件!"
filetest = open("file.txt", "rb")
strs = filetest.read(1024)
print "文件我內容是:",strs

示例6 運行結果:

關閉文件!
文件關閉成功!
重新打開讀取文件!
文件我內容是: python 編程語言可以用到很多地方

    read()方法
  read()方法從一個打開的文件中讀取一個字元串。需要重點註意的是,Python字元串可以是二進位數據,而不是僅僅是文字。
  語法:

fileObject.read([count])

  在這裡,被傳遞的參數是要從已打開文件中讀取的位元組計數。該方法從文件的開頭開始讀入,如果沒有傳入count,它會嘗試儘可能多地讀取更多的內容,很可能是直到文件的末尾。


  用例參考示例6

 

6文件位置

  • tell()方法告訴你文件內的當前位置;換句話說,下一次的讀寫會發生在文件開頭這麼多位元組之後。
  • seek(offset [,from])方法改變當前文件的位置。Offset變數表示要移動的位元組數。From變數指定開始移動位元組的參考位置。
  • 如果from被設為0,這意味著將文件的開頭作為移動位元組的參考位置。如果設為1,則使用當前的位置作為參考位置。如果它被設為2,那麼該文件的末尾將作為參考位置。

示例7:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/25 15:12
# @Author  : wwyx
filetest = open("file.txt", "wb")
filetest.write("python 編程語言可以用到很多地方")
# 打開文件
filetest = open("file.txt", "rb")
strs = filetest.read(10)
print "文件內容是:", strs
# 定位文件位置
p = filetest.tell()
print "文件當前位置", p

# 重新設置文件讀取的位置
filetest.seek(0, 0)
print "將文件位置重新設置成功!!!"

print "重新設置指針位置之後讀取的文件"
strs = filetest.read(10)
print "文件內容是:", strs


print "關閉文件!"
filetest.close()  # 關閉文件
print "文件關閉成功!"

示例7運行結果:

文件內容是: python 編
文件當前位置 10
將文件位置重新設置成功!!!
重新設置指針位置之後讀取的文件
文件內容是: python 編
關閉文件!
文件關閉成功!

 

7.重命名和刪除文件
  Python的os模塊提供了幫你執行文件處理操作的方法,比如重命名和刪除文件。
  要使用這個模塊,你必須先導入它,然後才可以調用相關的各種功能。
  rename()方法:
  rename()方法需要兩個參數,當前的文件名和新文件名。
  語法:

os.rename(current_file_name, new_file_name)

示例8:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/25 15:12
# @Author  : wwyx
import os
filetest = open("myfile.txt", "wb")
# 文件寫入內容
filetest.write("python 基礎學習")
# 未年檢關閉!
filetest.close()
# 文件重新命名
os.rename("myfile.txt", "renamefile.txt")

print "重新命名後的文件名稱是:", filetest.name
# 以只讀方式打開重命名文件
fileremane = open("renamefile.txt", "r")
strs = fileremane.read(100)
print "文件名稱:", fileremane.name
print "讀取修改後文件的內容是:", strs

示例 8 運行結果:

重新命名後的文件名稱是: myfile.txt
文件名稱: renamefile.txt
讀取修改後文件的內容是: python 基礎學習

註意:如果目錄下麵已經存在相關名稱文件,那麼重命名就會出現異常

  remove()方法
  你可以用remove()方法刪除文件,需要提供要刪除的文件名作為參數。
  語法:

os.remove(file_name)

示例 9

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/25 15:12
# @Author  : wwyx
import os
filetest = open("myfile.txt", "wb")
# 文件寫入內容
filetest.write("python 基礎學習")
# 未年檢關閉!
filetest.close()
# 刪除文件
os.remove("myfile.txt")
# 重新讀取刪除掉的文件
filetest = open("myfile.txt", "rb")
# 列印出文件內容
print "文件內容是:", filetest.read(10)

示例 9 運行結果

Traceback (most recent call last):
  File "E:/python/hello/untitled3/filetest.py", line 14, in <module>
    filetest = open("myfile.txt", "rb")
IOError: [Errno 2] No such file or directory: 'myfile.txt'

運行結果:因為讀取了一個刪除掉的文件,所以會報異常

 

8. Python里的目錄
  所有文件都包含在各個不同的目錄下,不過Python也能輕鬆處理。os模塊有許多方法能幫你創建,刪除和更改目錄。
  mkdir()方法
  可以使用os模塊的mkdir()方法在當前目錄下創建新的目錄們。你需要提供一個包含了要創建的目錄名稱的參數。
  語法:

os.mkdir("newdir")

 

  chdir()方法
  可以用chdir()方法來改變當前的目錄,修改目錄路徑。chdir()方法需要的一個參數是你想設成當前目錄的目錄名稱。
  語法:

os.chdir("newdir")

 

  getcwd()方法
  getcwd()方法顯示當前的工作目錄。
  語法:

os.getcwd()

  rmdir()方法
  rmdir()方法刪除目錄,目錄名稱以參數傳遞。
  在刪除這個目錄之前,它的所有內容應該先被清除。
  語法:

os.rmdir('dirname')

示例10:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/25 15:12
# @Author  : wwyx
import os
# 創建一個目錄
os.mkdir("mydir")
# 獲取當前目錄
nowdir = os.getcwd()
print "當前目錄:", nowdir
# 重新定位目錄,修改目錄路徑
os.chdir("mydir")
# 獲取修改後的目錄路徑
updatedir = os.getcwd()
print "修改後的當前目錄是:",updatedir
ind = updatedir.rfind("\\")
print "截取後的字元串", ind
print "type:", type(updatedir)
newdir = updatedir[0:int(ind)]
print "new dir", newdir
# 重新定位目錄,修改目錄路徑
os.chdir(newdir)
# 獲取修改後的目錄路徑
updatedir = os.getcwd()
print "修改後的當前目錄是:",updatedir
# 刪除目錄
os.rmdir("mydir")
# 獲取刪除後的目錄路徑
deletedir = os.getcwd()
print "修改後的當前目錄是:",deletedir

示例10 運行結果:

當前目錄: E:\python\hello\untitled3
修改後的當前目錄是: E:\python\hello\untitled3\mydir
截取後的字元串 25
type: <type 'str'>
new dir E:\python\hello\untitled3
修改後的當前目錄是: E:\python\hello\untitled3
修改後的當前目錄是: E:\python\hello\untitled3

 

9.文件、目錄相關的方法
  三個重要的方法來源能對Windows和Unix操作系統上的文件及目錄進行一個廣泛且實用的處理及操控,如下:

  • File 對象方法: file對象提供了操作文件的一系列方法。
  • OS 對象方法: 提供了處理文件及目錄的一系列方法。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • python開發【第一篇】:目錄 python開發【第二篇】:python初體驗 python開發【第三篇】: python開發【第四篇】: python開發【第五篇】: python開發【第六篇】: ...
  • hibernate入門 1、orm hibernate是一個經典的開源的orm[數據訪問中間件]框架 ORM( Object Relation Mapping)對象關係映射 通過 對象模型 操作 資料庫關係模型 hibernate處於項目的持久層位置,因此又稱為持久層框架 2、hibernate核心 ...
  • DOM基於樹形,SAX基於事件,DOM4J和JDOM基於底層API ...
  • 在剛學習SpringMVC框架整合時,你也許會產生疑問為什麼Spring.xml和SpringMVC.xml中都有註解過濾。 <context:component-scan base-package="myproject"> 和<context:component-scan base-package ...
  • 前言 最近要找工作,免不得要有一番筆試,今年好像突然就都流行線上筆試了,真是搞的我一塌糊塗。有的公司呢,不支持Python,Java我也不會,C有些數據結構又有些複雜,所以是時候把STL再看一遍了…不會告訴你距離上次使用可能已經有半年以上了。 STL是什麼 STL為C++的標準模版庫,又稱為C++泛 ...
  • 20160923 定義:將一個類的定義放在另一個類的內部; 從外部類的非靜態方法之外,創建某個內部類的對象:OutClassName.InnerClassName; 內部類擁有所有其外部類的成員的訪問權; 成員內部類不能含有static修飾的變數和方法,因為成員內部類需要先創建了外部類,才能創建它自 ...
  • SpringMVC又一個漂亮的web框架,他與Struts2並駕齊驅,Struts出世早而占據了一定優勢,下麵同樣做一個簡單的應用實例,介紹SpringMVC的基本用法,接下來的博客也將梳理一下Struts2和SpringMVC的一些異同,通過梳理和舊知識的聯繫,讓學習的成本變低,花很短的時間就可以 ...
  • 分別使用序數和enummap的結果: 序數: test1() 使用enummap,tes1t ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...