Python 2 檔案讀取和輸出

2021-09-23 15:29:34 字數 4117 閱讀 7807

首先,需要:

import pandas as pd

對於各個檔案格式,讀取的語句分別如下:

path="c:/users/h/desktop/wordflag.csv"

name=pd.read_csv(path,sep=',',encoding='gbk')

字段

含義read_csv

讀乙個csv檔案

sep分隔符,預設為","

encoding

編碼方式,一般為』gbk』。若無法讀取,應將檔案另存為utf-8格式,再按encoding='utf-8』讀取

仍然使用read_csv() 函式。pandas讀寫csv和txt兩種檔案的用法一樣。

path="c:/users/h/desktop/wordflag1.txt"

name=pd.read_csv(path,sep=',',encoding='gbk')

path="c:/users/h/desktop/wordflag.xlsx"

df = pd.read_excel(path,sheetname=1)

#讀excel表的第2個sheet

字段

含義pd.read_excel(path[, sheetname=sheet_index])

讀excel檔案,預設讀第乙個sheet(sheet_index=0)

path

檔案字尾可以是xlsx or xls

sheetname

表示讀第幾個sheet,從0開始計數,預設為0.

也可一次性輸入多個sheet,如下:

path="c:/users/h/desktop/wordflag.xlsx"

#讀第1、2、4個sheet

df = pd.read_excel(path,sheetname=[0,1,3])

dfout[1]:

ordereddict([(0, 哈哈哈 嘿嘿嘿

0 哈哈哈 嘿嘿嘿

1 哈哈哈 嘿嘿嘿

2 哈哈哈 嘿嘿嘿

3 哈哈哈 嘿嘿嘿), (1, a b

0 a b

1 a b

2 a b

3 a b), (3, 1 2

0 1 2

1 1 2

2 1 2)])

結果為乙個ordereddict物件,檢視df[0]得:第乙個sheet的資料組成的dataframe。

df[0]

out[2]:

哈哈哈 嘿嘿嘿

0 哈哈哈 嘿嘿嘿

1 哈哈哈 嘿嘿嘿

2 哈哈哈 嘿嘿嘿

3 哈哈哈 嘿嘿嘿

常用讀取函式彙總:

函式功能

read_csv

讀取檔案、url中帶分隔符的資料,預設分隔符為英文逗號","

read_table

讀取檔案、url中帶分隔符的資料,預設分隔符為製表符"\t"

read_fwf

讀取固定列寬資料,無分隔符

read_clipboard

讀取剪下板資料

對於各個檔案格式,寫出的語句分別如下:

path="c:/users/h/desktop/wordflag.csv"

name.to_csv(path)

執行後生成乙個名為wordflag的csv檔案,儲存於路徑"c:/users/h/desktop/「

path="c:/users/h/desktop/wordflag.txt"

name.to_csv(path)

執行後生成乙個名為wordflag的txt檔案,儲存於路徑"c:/users/h/desktop/「

path="c:/users/h/desktop/wordflag1.xlsx"

name.to_excel(path)

用read_table函式。

path="c:/users/h/desktop/wordflag.txt"

with open(path,'r') as f:

name = pd.read_table(f)

字段

含義with

表示"在…的條件下,執行後續語句"

open(path[,mode]) as filename

以mode方式開啟path處的檔案,並取別名為filename。mode預設為唯讀(「r」)

各種mode

r以唯讀方式開啟檔案,從頭開始讀。

r+開啟乙個檔案用於讀寫,從頭開始讀。

w開啟乙個檔案只用於寫入。若檔案已存在,則刪除原內容從頭寫入。若檔案不存在,建立新檔案。

w+開啟乙個檔案用於讀寫。若檔案已存在,則刪除原內容從頭寫入。若檔案不存在,建立新檔案。

a開啟乙個檔案用於追加。若檔案已存在,則追加內容寫入。若檔案不存在,建立新檔案。

a+開啟乙個檔案用於讀寫。若檔案已存在,檔案開啟時會是追加讀寫模式。若該檔案不存在,建立新檔案。

逐行讀取

a=

#生成乙個空列表

path="c:/users/h/desktop/wordflag1.txt"

with open(path) as f:

#開啟path處的檔案,取別名為f

for i, line in enumerate(f.readlines()):

#窮舉檔案中讀到的行,i為行編號,line為行內容

#f.readlines()為列**式,列表每一元素為一行

#在列表a中追加讀到的line

f.close()

函式

功能enumerate(object)

窮舉所有的組合,其中object為可迭代的物件,如列表

readline( )

檔案的方法,用來讀行資料

列表、dataframe均有的方法,追加資料data

較為超前,可等到了解dataframe和迴圈體再看。

import pandas as pd

import os

import sys

import csv

#設定maxint,避免資料溢位

maxint = sys.maxsize

decrement = true

while decrement:

decrement = false

try:

csv.field_size_limit(maxint)

except overflowerror:

maxint = int(maxint/10)

decrement = true

#得到根目錄

os.chdir('d:/chukumingxiweek20')

file_chdir=os.getcwd()

#檔名列表

filecsv_list=

#遍歷根目錄下的檔案

for root,dirs,files in os.walk(file_chdir):

for file in files:

#選取其中的csv檔案

if os.path.splitext(file)[1]=='.csv':

#在檔名列表中追加檔名

#建立乙個空dataframe

data=pd.dataframe()

for csv in filecsv_list[0:]:

try:

#讀取 datatemp=pd.read_csv(csv,sep=none,encoding='utf-8',error_bad_lines=false)

#列印當前讀取的檔名

print(csv)

#追加當前檔案資料

except typeerror:

pass

continue

下期預告:字串操作、迴圈體、條件語句

python3 和python2檔案相互轉換

注 本文以python3轉python2為例,如要python2轉python3,將 中的3to2改為2to3即可 操作步驟 安裝3to2庫 pip3 install 3to2 找到檔案3to2,這個檔案是沒有字尾的,路徑在python的scripts資料夾下。anaconda也是一樣 開啟cmd,...

python讀取grib2檔案

一 安裝pygrib庫 linux安裝conda後執行命令 conda install c conda forge pygrib y 二 讀取檔案操作 1.獲得屬性列表 import pygrib import sys import pandas as pd if name main fr sys....

C 輸入 2 檔案讀取

記錄以檔案方式讀取資料。如從檔案data.txt中讀取資料,檔案內容如下 0 0 3 82 2 1 15 3 4 86 3 5 46 4 7 5 思路 先通過檔案的行數,得到樣本個數,再建立動態陣列,逐個讀取資料。變數定義 define max sample num 100 最大樣本個數 doubl...