Python之文件讀寫(csv文件,CSV庫,Pandas庫)


前言

  1. 一.Python文件讀取
  2. 二、讀取CSV文件

一.Python文件讀取


1. open函數是內置函數之with操作

- 關於路徑設置的問題斜杠設置成D:\\文件夾\\文件或是D:/文件夾/文件
f = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file: 必需,文件路徑(相對或者絕對路徑)。
  • mode: 可選,文件打開模式
  • buffering: 設置緩沖
  • encoding: 一般使用utf8
  • errors: 報錯級別
  • newline: 區分換行符
  • closefd: 傳入的file參數類型
  • opener:

打開文件之后就要開始操作了,一個讀取了,但是要是沒有打開文件就會報錯,或則在讀取的過程中報錯就不會關閉文件了,所以為了無論報錯與否,在使用完文件后就要關閉文件。如下:

try:
    f = open('/path/to/file', 'r')
    print(f.read())
finally:
    if f:
        f.close()

這樣寫太過於麻煩,Python中直接使用with來直接自動來幫我們調用close()

with open('/path/to/file', 'r') as f:
    print(f.read())

上面的寫法和try...finally效果一樣。

2. 讀文件

f.read()一次性讀入所有數據,保險起見可以規定每次讀取的數據大小,f.read(size)進行反復調用讀取。

f.readline(),每次讀取一行,f.readlines()一次讀取多行另外,調用readline()可以每次讀取一行內容,調用readlines()一次讀取所有內容並按行返回list。因此,要根據需要決定怎么調用。

for line in f.readlines():
    print(line.strip()) # 把末尾的'\n'刪掉

3. 寫文件

和寫文件一樣,首先使用open函數直接打開但是傳入標識符mode='w'即寫入模式。
可以調用f.write()寫入內容,寫完之后務必使用f.close()關閉文件。

方法一:
f = open('/Users/michael/test.txt', 'w')
f.write('Hello, world!')
f.close()
方法二:
with open('/Users/michael/test.txt', 'w') as f:
    f.write('Hello, world!')
  • 要寫入或則是讀取特定編碼的文本文件,請給open()函數傳入encoding參數,將字符串自動轉換成指定編碼。

4. 多個文件的讀寫操作

方法一:
with open('/home/xbwang/Desktop/output_measures.txt','r') as f:
    with open('/home/xbwang/Desktop/output_measures2.txt','r') as f1:
        with open('/home/xbwang/Desktop/output_output_bk.txt','r') as f2:
       ........
       ........
       ........
方法二:
with open('/home/xbwang/Desktop/output_measures.txt','r') as f:
........
with open('/home/xbwang/Desktop/output_measures2.txt','r') as f1:
........
with open('/home/xbwang/Desktop/output_output_bk.txt','r') as f2:
........

二、讀取CSV文件


1. 使用csv庫進行讀寫操作

1.獲取csv文件的文件表頭

#方式一
import csv
with open("D:\\test.csv") as f:
    reader = csv.reader(f)
    rows=[row for row in  reader]
    print(rows[0])



#方式二
import csv
with open("D:\\test.csv") as f:
    #1.創建閱讀器對象
    reader = csv.reader(f)
    #2.讀取文件第一行數據
    head_row=next(reader)
    print(head_row)

2.讀取文件的某一列數據

說明使用csv.reader()返回一個reader對象,它將迭代給定csvfile中的行。
csvfile可以是任何支持迭代器協議的對象,
並在每次__next__()調用其方法時返回一個字符串- 文件對象和列表對象都是合適的。
import csv
with open("D:\\test.csv") as f:
    reader = csv.reader(f)
    column=[row[0] for row in  reader]
    print(column)

3.寫入csv文件

import csv
with open("D:\\test.csv",'a') as f:
     row=['曹操','23','學生','黑龍江','5000']
     write=csv.writer(f)
     write.writerow(row)
     print("寫入完畢!")
  • writerow()方法是一行一行寫入,
  • writerows方法是一次寫入多行

2. 使用pandas庫進行csv文件操作

1.讀取csv的全部文件

import pandas as pd
path= 'D:\\test.csv'
with open(path) as file:
    data=pd.read_csv(file)
    print(data)

2.讀取文件前幾行數據

import pandas as pd
path= 'D:\\test.csv'
with open(path)as file:
    data=pd.read_csv(file)
    #讀取前2行數據
    head_datas = data.head(0)
    head_datas = data.head(1)
    print(head_datas)
說明head函數就是用來讀取哪一行的

3.讀取文件哪一行的全部內容

import pandas as pd
path= 'D:\\test.csv'
with open(path)as file:
    data=pd.read_csv(file)
    #讀取第一行所有數據
    print(data.ix[0,])

4.讀取文件的哪幾行數據

import pandas as pd
path= 'D:\\test.csv'
with open(path)as file:
    data=pd.read_csv(file)
    #讀取第一行、第二行、第四行的所有數據
    print(data.ix[[0,1,3],:])

5.讀取所有行和列數據

import pandas as pd
path= 'D:\\test.csv'
with open(path)as file:
    data=pd.read_csv(file)
    #讀取所有行和列數據
    print(data.ix[:,:])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM