Python 學習筆記(十二)Python文件和迭代(一)

来源:https://www.cnblogs.com/wangruihua-521/archive/2018/03/16/8563907.html
-Advertisement-
Play Games

文件 文件和文件夾 文件:文本文件、二進位文件 文件夾:(windows) G:\pythonWorkspace\python\study (linux/mac) /home/workspace/python 註意:文件夾路徑的斜杠linux與windows不同 windows下文件路徑:示例 跨平 ...


文件

文件和文件夾

文件:文本文件、二進位文件

文件夾:(windows) G:\pythonWorkspace\python\study   

    (linux/mac) /home/workspace/python

    註意:文件夾路徑的斜杠linux與windows不同

windows下文件路徑:示例 

1 >>> p1="G:\pythonWorkspace\python\study\test.txt"
2 >>> p2 =r"G:\pythonWorkspace\python\study\test.txt"
3 >>> p3 ="G:\\pythonWorkspace\\python\\study\\test.txt"

 

跨平臺路徑:os.path.abspath(path)

查看屬性:os.stat(filename)


p2 =r"G:\pythonWorkspace\python\study\test.txt"
1 >>> import os #引入os 模塊
2 >>> os.stat(p2) #查看文件屬性 3 nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0L, st_nlink=0, st_uid=0, st_gid=0, st_size=14L, st_atime=1520953379L, st_mtime=1520953401L, st_ctime=1520953379L) 4 >>>

 

讀、寫文件

python 中文件也是一種類型的對象,有屬性 __iter__,說明是可迭代的

打開一個文件

>>> dir(file)  #查看文件的屬性
['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'closed', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'mode', 'name', 'newlines', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines']
>>> f =open(p2) #打開一個文件
>>> for line in f:  #迴圈讀取文件內容
...     print line #列印出來後,兩行之間有空行,原因print 會自動的帶上一個換行符
...
study python

aaaaa

>>> f =open(p2) #第二次也要open文件
>>> for line in f:
...     print line, #出現空行解決方式在line後面加,
...
study python
aaaaa
>>>

寫文件

w 模式 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件

a 模式 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。

with 語句 可以不寫close() 

1 >>> nf =open("G:\\pythonWorkspace\\python\\study\\test.txt","w") #打開一個文件,用w模式,寫入
2 >>> nf.write("This is a new file.") #將這句話寫入文件
3 >>> nf.close() #打開一個文件,寫入後必須關閉掉
4 >>> nf =open("G:\\pythonWorkspace\\python\\study\\test.txt")
5 >>> for line in nf:
6 ...     print line
7 ...
8 This is a new file.
 1 >>> with open("G:\\pythonWorkspace\\python\\study\\test.txt","a") as fp:  #with open 也可以創建文件 打開文件,適用with open write後面的close()可以不寫,它會自動處理
 2 ...     fp.write("\n what's your name?")
 3 ...
 4 
 5 >>> f =open("G:\\pythonWorkspace\\python\\study\\test.txt")
 6 >>> for line in f:
 7 ...     print line
 8 ...
 9 
10 
11  what's your name?
12 >>>

不同的讀文件方法

 1 >>> help(file.read)
 2 Help on method_descriptor:
  #參數size可選,如果沒有參數,將文件的全部內容讀取,如果有參數,將讀取到指定的位元組,然後將讀取到的這些內容以字元串形式返回
3 所讀取的內容一次返回到記憶體中,隨時可以取用,方便快捷。這種方式,如果文件特別大的時候,會使記憶體開銷太大。 4 read(...) 5 read([size]) -> read at most size bytes, returned as a string. 6 7 If the size argument is negative or omitted, read until EOF is reached. 8 Notice that when in non-blocking mode, less data than what was requested 9 may be returned, even if no size parameter was given. 10 11 >>> help(file.readline) 12 Help on method_descriptor: 13 參數(size)可選,它是以行為單位返回一個字元串,每次讀取一行,依次迴圈往下讀取,如果沒有參數,則將讀取到文件最後,返回空字元串,到達文件末尾。END OF FILE (EOF) 14 readline(...) 15 readline([size]) -> next line from the file, as a string. 16 17 Retain newline. A non-negative size argument limits the maximum 18 number of bytes to return (an incomplete line may be returned then). 19 Return an empty string at EOF. 20 21 >>> help(file.readlines) 22 Help on method_descriptor: 23 返回以行為單位的列表,相當於執行readline, 得到每一行,然後把這一行的字元串,作為列表中的元素,再放到一個列表中,最後將列表返回。 24 readlines(...) 25 readlines([size]) -> list of strings, each a line from the file. 26 27 Call readline() repeatedly and return a list of the lines so read. 28 The optional size argument, if given, is an approximate bound on the 29 total number of bytes in the lines returned.

示例:讀取文件

  read()      讀取文件內容,如果指定參數,將指定位元組相應的內容返回,如果沒有指定參數,將文件內容全部返回。

  readline() 以行為單位讀取文件,返回一個字元串,每次讀取一行,一次迴圈往下讀取。如果沒有指定參數,將讀取到文件末尾。

  readlines() 返回以行為單位的列表,相當於執行readline,得到每一行,然後把這一行的字元串,作為列表的元素,最後將這個列表返回

  import fileinput 讀取大文件時,使用 

  f.seek(0) 改變當前文件的位置

  f.tell() 告訴文件當前的指針位置,文件內的當前位置

 1 >>> f =open("G:\\pythonWorkspace\\python\\study\\test.txt")
 2 >>> c=f.read() #把文件的全部內容讀取出來,放到一個變數
 3 >>> c
 4 "\n what's your name?"
 5 >>> f =open("G:\\pythonWorkspace\\python\\study\\test.txt")
 6 >>> f.read(5) #有參數,將返回相應位元組的內容
 7 '\n wha'
 8 >>> f =open("G:\\pythonWorkspace\\python\\study\\test.txt")
 9 >>> f.readline() 返回第一行的內容,每一行都是一個字元串
10 '\n'
11 >>> f =open("G:\\pythonWorkspace\\python\\study\\test.txt")
12 >>> f.readlines()  返回一個列表,列表中每一行為一個元素
13 ['\n', " what's your name?"]
14 >>> import fileinput #引入大文件模塊,避免文件太大,記憶體過滿的問題
15 >>> for line in fileinput.input("G:\\pythonWorkspace\\python\\study\\bigfile.txt"):
16 ...     print line
17 ...
18 Before getting started,
19 
20 you may want to find out which IDEs and text editors are tailored to make Python editing easy,
21 
22 browse the list of introductory books,
23 
24 or look at code samples that you might find helpful.
25 
26 There is a list of tutorials suitable for experienced programmers on the BeginnersGuide/Tutorials page.
27 
28 There is also a list of resources in other languages which might be useful if English is not your first language.
29 >>> f=open("G:\\pythonWorkspace\\python\\study\\bigfile2.txt")
30 >>> for line in f:
31 ...     print line
32 ...
33 Before getting started,
34 
35 you may want to find out which IDEs and text editors are tailored to make Python editing easy,
36 
37 browse the list of introductory books,
38 
39 or look at code samples that you might find helpful.
40 
41 There is a list of tutorials suitable for experienced programmers on the BeginnersGuide/Tutorials page.
42 
43 There is also a list of resources in other languages which might be useful if English is not your first language.
  #每次讀取完一個文件之後,都需要重新把這個文件再打開一次,之所以這樣做是因為指針已經移到文件最後了。
44 >>> f.seek(0) #使用seek()移動指針,參數0為,指針回到文件最開始, 45 >>> f.readline() 46 'Before getting started, \n' 47 >>> f.tell() #使用tell()查看當前指針的位置 48 26L 49 >>> f.seek(4) #參數為4,將指針定位到從開頭到第4個字元的位置的後面 50 >>> f.tell() 51 4L 52 >>>

 


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

-Advertisement-
Play Games
更多相關文章
  • 1.1 基於TCP協議的RPC 1.1.1 RPC名詞解釋 RPC的全稱是Remote Process Call,即遠程過程調用,RPC的實現包括客戶端和服務端,即服務調用方和服務提供方。服務調用方發送RPC請求到服務提供方,服務提供方根據請求的參數執行請求方法,並將結果返回給服務調用方,一次RPC ...
  • 我們公司有個很牛逼的女生,是我們項目組的核心人物之一,一般我有啥不懂的就問她,就在昨天我們討論一件關於緩存的事情,我覺得在類中,用static定義的引用變數就是緩存(因為在以前的公司就這麼叫),而她認為這並不是,這個只是存在記憶體里的,這隻是一個成員變數,所以他覺得只能叫變數,牛逼的大佬們你們覺得叫什 ...
  • 1.下載Java 地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安裝到電腦 2.配置環境 在 控制面板\所有控制面板項\系統 高級系統設置->環境變數 JAVA_HOME ...
  • 換了一家公司,感覺好對不起以前那些領導的栽培和培養啊,但是沒辦法,我真的受不了那些煙味和每天加班到好晚好晚的工作環境,也許這就是所謂的不合吧。。 到了新的一家公司,明顯比剛出來的時候要好太多,別人一說什麼東西我都會有反應,而且不會一臉懵b的問別人還不知道別人說了些啥。。感覺👌。 閑話不多說,先看在 ...
  • 本文較為詳細地介紹了Scala的理論,並結合相應的代碼進行解讀與實踐。文章內容主要包含Scala的簡介,數據類型,函數(函數定義、匿名函數、嵌套函數、迴圈語句等),集合(List、Tuple、Map),伴生對象,trait,Actor,隱式轉換,JDBC等。 ...
  • 最近到廣州某建站互聯網公司面試,當時面試官問假設有兩個字元串String a="abc",String b = "abc";問輸出a==b是true還是false。我當時毫不猶豫答了true,然後根據字元串常量池的知識點結合jvm的記憶體模型講解,然而他卻跟我說是false,說這是最基本的問題。我當時 ...
  • 前言 之前做過一個JavaScript版本的2048游戲,最近在學習C++,昨天晚上突然心血來潮,想用C++來實現,因為核心演算法已十分理解,所以兩個小時擼出來一個C++的簡易版本。 簡介 二維數組遍歷,C++基本數據類型,string類,控制結構,函數。 本方法不涉及指針以及面向對象思想,所以可作為 ...
  • pandas and numpy notebook 最近工作交接,整理電腦資料時看到了之前的基於Jupyter學習數據分析相關模塊學習筆記。想著拿出來分享一下,可是Jupyter導出來html文件,博客園不支持js註入,貼圖效果實在太差勁兒。所以只貼了內容,要是有需要文件原版(pdf、md、html ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...