前言
一.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[:,:])
