<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 概述 文件是計算機中由OS管理的具有名字的存儲區域; 在linux系統上,文件被看作是**字節序列**; **非序列化**的數據不能直接存儲在文件系統的文件中。 ![](http://images2015.cnblogs.com/blog/1114822/201702/1114822-20170228164022345-1278471804.png) ## 打開文件 ### 語法格式 ~~~ fd = open(filename [,mode=r [,bufsize]]) ~~~ ### 參數說明 **mode** ~~~ 'r'代表輸入打開文 'w'代表輸出生成并打開文件 'a'代表在文尾追加內容而打開文件 在模式后附加`'+'`表示同時支持輸入輸出操作 在模式后附加`'b'`表示以二進制方式打開 ~~~ **bufsize** ~~~ 0表示無輸出緩存 1表示緩沖一行數據 負數表示使用系統默認設置 正數表示指定緩沖空間大小(byte) ~~~ >[danger]r+: 從頭讀,從尾寫 w+: 從頭寫,從寫后的位置讀,什么也讀不到 a+: 從尾寫,從寫后的位置讀,什么也讀不到 --- ## 文件對象的方法 ~~~ next() # 取出下一行 fileno() # 文件描述符 read(size) # 從文件讀多少個**字節** readline() # 每次返回一行(包括行結束符'\n') readlines() # 以`列表`形式返回所有行(包括行結束符'\n') tell() # 返回`指針`在當前文件中的位置 seek(offset[, whence=0]) offset 偏移的字節數 0:從文件頭開始偏移 1:從當前位置開始偏移 2:從文件尾部開始偏移 ~~~ ~~~ write(str) # 寫入文件,寫入的內容必須是字符串 writelines(sequence_of_strings) # 等價于為每個字符串調用一次write()函數 flush() # 將數據從緩沖區寫入磁盤 truncate([size]) # 文件截取,默認到當前位置 name # 返回文件名稱 closed # 文件狀態 是否關閉 close() # 關閉文件 encoding # 編碼格式,空為默認格式 mode # 文件打開模式 softspace # 字符串寫入時是否有空格分隔, 0表示不使用空格隔離 ~~~ --- ## 使用文件 文件迭代器是最好的 **行** 讀取工具,文件默認按行進行迭代 內容是字符串不是對象 文件可以緩沖的并且是可查找 --- ## 文件持久存儲 ### 將對象轉化的字符串存入文件中 需將對象轉化為字符串才能存到文件中 ```python fd = open('fd.txt', 'w') #新建 fd.write('hello text file\n') #寫入 fd.readline() # 返回字符串 #讀取 ``` ### 用pickle在文件中存儲并解析python對象 用pickle存儲python原生對象 pickle模塊能直接在文件中存儲幾乎任何python對象 #### pickle寫入 ```python D = {'a': 1, 'b': 2} #字典 F = open('fd.pkl', 'wb') #打開文件 import pickle #導入模塊 pickle.dump(D, F) #將D寫入F F.close() #關閉文件 ``` #### pickle讀取 ```python fd = open('fd.pkl', 'rb') E = pickle.load(fd) E fd.close() ``` ### 用struct文件中打包二進制數據的存儲與解析 `struct`模塊能構造并解析二進制數據,實際上是禁止轉換工具。 > 2.7測試通過,3.0未通過 #### 寫入 ```python F = open('data.bin', 'wb') import struct data = struct.pack('>i4sh', 7, 'spam', 8) F.write(data) F.close() ``` #### 讀取 ```python F = open('data.bin', 'rb') data = F.read() value = struct.unpack('>i4sh', data) value ``` ---- ### 文件上下文管理器 with open() as fd: 內置類型陷阱 1. 賦值生成引用,而不是拷貝 2. 重復能夠增加層次深度 3. 留意循環數據結構 4. 不可變類型不可在原處改變 可以通過分片,合并來創建一個新對象 T = (1, 2, 3) T = T[0:2] + (4,) ==> T = (1, 2, 4)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看