Python模塊庫(kù)用法

os模塊用法大全

os.listdir(dirname):列出dirname下的目錄和文件

os.getcwd():獲得當(dāng)前工作目錄

os.chdir(dirname):改變工作目錄到dirname

os.path.realpath(path):返回path的真實(shí)路徑

os.getcwd:得到當(dāng)前工作目錄,即當(dāng)前python腳本工作的目錄路徑。

os.mkdir(name):創(chuàng)建目錄

os.rmdir(name):刪除目錄

os.path.isfile()檢驗(yàn)給出的路徑是一個(gè)文件

os.path.isdir() 檢驗(yàn)給出的路徑是一個(gè)目錄

os.listdir():返回指定目錄下的所有文件和目錄名

os.remove(file):刪除一個(gè)文件

os.path.join(path,name):路徑拼接

os.path.split():返回一個(gè)路徑的目錄名和文件名

os.path.basename(path):返回文件名

os.path.dirname(path):返回文件路徑

os.stat(file):獲得文件屬性

os.removedirs(“c:\musne”):刪除多個(gè)目錄

os.path.existe():檢驗(yàn)給出的路徑是否真的存在

os.curdir():返回當(dāng)前目錄('.')

os.chmod(file):修改文件權(quán)限和時(shí)間戳

os.path.exists(name):判斷是否存在文件或目錄name

os.path.getsize(name):或得文件大小,如果name是目錄返回0L

os.path.abspath(name):獲得絕對(duì)路徑

os.path.isabs():判斷是否為絕對(duì)路徑

os.path.normpath(path):規(guī)范path字符串形式

os.path.splitext():分離文件名和擴(kuò)展名

os.name():指示你正在使用的工作平臺(tái)。比如對(duì)于Windows,它是'nt',而對(duì)于Linux/Unix用戶(hù),它是'posix'。徑

os.linesep():給出當(dāng)前平臺(tái)的行終止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'

os.sep():取代操作系統(tǒng)特定的路徑分隔符

os.system():運(yùn)行shell命令

os.exit():終止當(dāng)前進(jìn)程

os.getenv():讀取環(huán)境變量

os.putenv:設(shè)置環(huán)境變量


pandas模塊的使用方法

import pandas as pd

Python中pandas模塊的講解

Python運(yùn)用于數(shù)據(jù)分析的簡(jiǎn)單教程: http://www.jb51.net/article/62982.htm

read_csv()

讀寫(xiě)csv數(shù)據(jù)

df = pd.read_csv(path): 讀入csv文件,形成一個(gè)數(shù)據(jù)框(data.frame)

df = pd.read_csv(path, header=None) 不要把第一行作為header

to_csv()

* 注意,默認(rèn)會(huì)將第一行作為header,并且默認(rèn)會(huì)添加index,所以不需要的話需要手動(dòng)禁用 *

df.to_csv(path, header=False, index=False)

數(shù)據(jù)框操作

df.head(1) 讀取頭幾條數(shù)據(jù)

df.tail(1) 讀取后幾條數(shù)據(jù)

df[‘date’] 獲取數(shù)據(jù)框的date列

df.head(1)[‘date’] 獲取第一行的date列

df.head(1)[‘date’][0] 獲取第一行的date列的元素值

sum(df[‘a(chǎn)bility’]) 計(jì)算整個(gè)列的和

df[df[‘date’] == ‘20161111’] 獲取符合這個(gè)條件的行

df[df[‘date’] == ‘20161111’].index[0] 獲取符合這個(gè)條件的行的行索引的值

df.iloc[1] 獲取第二行

df.iloc[1][‘test2’] 獲取第二行的test2值

10 mins to pandas?

df.index 獲取行的索引

df.index[0] 獲取第一個(gè)行索引

df.index[-1] 獲取最后一個(gè)行索引,只是獲取索引值

df.columns 獲取列標(biāo)簽

df[0:2] 獲取第1到第2行,從0開(kāi)始,不包含末端

df.loc[1] 獲取第二行

df.loc[:,’test1’] 獲取test1的那一列,這個(gè)冒號(hào)的意思是所有行,逗號(hào)表示行與列的區(qū)分

df.loc[:,[‘test1’,’test2’]] 獲取test1列和test2列的數(shù)據(jù)

df.loc[1,[‘test1’,’test2’]] 獲取第二行的test1和test2列的數(shù)據(jù)

df.at[1,’test1’] 表示取第二行,test1列的數(shù)據(jù),和上面的方法類(lèi)似

df.iloc[0] 獲取第一行

df.iloc[0:2,0:2] 獲取前兩行前兩列的數(shù)據(jù)

df.iloc[[1,2,4],[0,2]] 獲取第1,2,4行中的0,2列的數(shù)據(jù)

(df[2] > 1).any() 對(duì)于Series應(yīng)用any()方法來(lái)判斷是否有符合條件的


stat模塊的使用方法

>>>import os>>>printos.stat("/root/python/zip.py")

(33188, 2033080, 26626L, 1, 0, 0, 864, 1297653596, 1275528102, 1292892895)>>>printos.stat("/root/python/zip.py").st_mode#權(quán)限模式33188>>>printos.stat("/root/python/zip.py").st_ino#inode number2033080>>>printos.stat("/root/python/zip.py").st_dev#device26626>>>printos.stat("/root/python/zip.py").st_nlink#number of hard links1>>>printos.stat("/root/python/zip.py").st_uid#所有用戶(hù)的user id0>>>printos.stat("/root/python/zip.py").st_gid#所有用戶(hù)的group id0>>>printos.stat("/root/python/zip.py").st_size#文件的大小,以位為單位864>>>printos.stat("/root/python/zip.py").st_atime#文件最后訪問(wèn)時(shí)間1297653596>>>printos.stat("/root/python/zip.py").st_mtime#文件最后修改時(shí)間1275528102>>>printos.stat("/root/python/zip.py").st_ctime#文件創(chuàng)建時(shí)間1292892895

描述os.stat()返回的文件屬性列表中各值的意義

fileStats?=?os.stat(path) 獲取到的文件屬性列表

fileStats[stat.ST_MODE] 獲取文件的模式

fileStats[stat.ST_SIZE] 文件大小

fileStats[stat.ST_MTIME] 文件最后修改時(shí)間

fileStats[stat.ST_ATIME] 文件最后訪問(wèn)時(shí)間

fileStats[stat.ST_CTIME] 文件創(chuàng)建時(shí)間

stat.S_ISDIR(fileStats[stat.ST_MODE]) 是否目錄

stat.S_ISREG(fileStats[stat.ST_MODE]) 是否一般文件

stat.S_ISLNK(fileStats[stat.ST_MODE]) 是否連接文件

stat.S_ISSOCK(fileStats[stat.ST_MODE]) 是否COCK文件

stat.S_ISFIFO(fileStats[stat.ST_MODE]) 是否命名管道

stat.S_ISBLK(fileStats[stat.ST_MODE]) 是否塊設(shè)備

stat.S_ISCHR(fileStats[stat.ST_MODE]) 是否字符設(shè)置


openpyxl模塊(最全總結(jié) 足夠初次使用)

1. 安裝

pip install openpyxl

2. 打開(kāi)文件

① 創(chuàng)建

from? openpyxl import? Workbook

# 實(shí)例化

wb = Workbook()

# 激活 worksheet

ws = wb.active

② 打開(kāi)已有

>>> from openpyxl? import load_workbook

>>> wb2 = load_workbook('文件名稱(chēng).xlsx')

3. 儲(chǔ)存數(shù)據(jù)

復(fù)制代碼

# 方式一:數(shù)據(jù)可以直接分配到單元格中(可以輸入公式)

ws['A1'] = 42

# 方式二:可以附加行,從第一列開(kāi)始附加(從最下方空白處,最左開(kāi)始)(可以輸入多行)

ws.append([1, 2, 3])

# 方式三:Python 類(lèi)型會(huì)被自動(dòng)轉(zhuǎn)換

ws['A3'] = datetime.datetime.now().strftime("%Y-%m-%d")

復(fù)制代碼

4. 創(chuàng)建表(sheet)

# 方式一:插入到最后(default)

>>> ws1 = wb.create_sheet("Mysheet")

# 方式二:插入到最開(kāi)始的位置

>>> ws2 = wb.create_sheet("Mysheet", 0)

5. 選擇表(sheet)

# sheet 名稱(chēng)可以作為 key 進(jìn)行索引

>>> ws3 = wb["New Title"]

>>> ws4 = wb.get_sheet_by_name("New Title")

>>> ws is ws3 is ws4

True

6. 查看表名(sheet)

復(fù)制代碼

# 顯示所有表名

>>> print(wb.sheetnames)

['Sheet2', 'New Title',? 'Sheet1']

# 遍歷所有表

>>> for sheet in? wb:

...? ? print(sheet.title)

復(fù)制代碼

7. 訪問(wèn)單元格(call)

① 單一單元格訪問(wèn)

復(fù)制代碼

# 方法一

>>> c = ws['A4']

# 方法二:row 行;column 列

>>> d = ws.cell(row=4, column=2, value=10)

# 方法三:只要訪問(wèn)就創(chuàng)建

>>> for i in? range(1,101):

...? ? ? ? for j in range(1,101):

...? ? ? ? ? ? ws.cell(row=i, column=j)

復(fù)制代碼

② 多單元格訪問(wèn)

復(fù)制代碼

# 通過(guò)切片

>>> cell_range = ws['A1':'C2']

# 通過(guò)行(列)

>>> colC = ws['C']

>>> col_range = ws['C:D']

>>> row10 = ws[10]

>>> row_range = ws[5:10]

# 通過(guò)指定范圍(行 → 行)

>>> for row in? ws.iter_rows(min_row=1, max_col=3, max_row=2):

...? ? for cell in? row:

...? ? ? ? print(cell)

<Cell Sheet1.A1>

<Cell Sheet1.B1>

<Cell Sheet1.C1>

<Cell Sheet1.A2>

<Cell Sheet1.B2>

<Cell Sheet1.C2>

# 通過(guò)指定范圍(列 → 列)

>>> for row in? ws.iter_rows(min_row=1, max_col=3, max_row=2):

...? ? for cell in? row:

...? ? ? ? print(cell)

<Cell Sheet1.A1>

<Cell Sheet1.B1>

<Cell Sheet1.C1>

<Cell Sheet1.A2>

<Cell Sheet1.B2>

<Cell Sheet1.C2>

# 遍歷所有 方法一

>>> ws = wb.active

>>> ws['C9'] = 'hello world'

>>> tuple(ws.rows)

((<Cell Sheet.A1>, <Cell Sheet.B1>, <Cell Sheet.C1>),

(<Cell Sheet.A2>, <Cell Sheet.B2>, <Cell Sheet.C2>),

...

(<Cell Sheet.A8>, <Cell Sheet.B8>, <Cell Sheet.C8>),

(<Cell Sheet.A9>, <Cell Sheet.B9>, <Cell Sheet.C9>))

# 遍歷所有 方法二

>>> tuple(ws.columns)

((<Cell Sheet.A1>,

<Cell Sheet.A2>,

<Cell Sheet.A3>,

...

<Cell Sheet.B7>,

<Cell Sheet.B8>,

<Cell Sheet.B9>),

(<Cell Sheet.C1>,

...

<Cell Sheet.C8>,

<Cell Sheet.C9>))

復(fù)制代碼

8. 保存數(shù)據(jù)

>>> wb.save('文件名稱(chēng).xlsx')

9. 其他

① 改變 sheet 標(biāo)簽按鈕顏色

ws.sheet_properties.tabColor = "1072BA"

② 獲取最大行,最大列

# 獲得最大列和最大行

print(sheet.max_row)

print(sheet.max_column)

③ 獲取每一行,每一列

sheet.rows為生成器, 里面是每一行的數(shù)據(jù),每一行又由一個(gè)tuple包裹。

sheet.columns類(lèi)似,不過(guò)里面是每個(gè)tuple是每一列的單元格。

復(fù)制代碼

# 因?yàn)榘葱?,所以返回A1, B1, C1這樣的順序

for row in sheet.rows:

? ? for cell in row:

? ? ? ? print(cell.value)

# A1, A2, A3這樣的順序

for column in sheet.columns:

? ? for cell in column:

? ? ? ? print(cell.value)

復(fù)制代碼

④ 根據(jù)數(shù)字得到字母,根據(jù)字母得到數(shù)字

復(fù)制代碼

from openpyxl.utils import get_column_letter, column_index_from_string

# 根據(jù)列的數(shù)字返回字母

print(get_column_letter(2))? # B

# 根據(jù)字母返回列的數(shù)字

print(column_index_from_string('D'))? # 4

復(fù)制代碼

⑤ 刪除工作表

# 方式一

wb.remove(sheet)

# 方式二

del wb[sheet]

⑥ 矩陣置換(行 → 列)

復(fù)制代碼

rows = [

? ? ['Number', 'data1', 'data2'],

? ? [2, 40, 30],

? ? [3, 40, 25],

? ? [4, 50, 30],

? ? [5, 30, 10],

? ? [6, 25, 5],

? ? [7, 50, 10]]

list(zip(*rows))

# out

[('Number', 2, 3, 4, 5, 6, 7),

('data1', 40, 40, 50, 30, 25, 50),

('data2', 30, 25, 30, 10, 5, 10)]

# 注意 方法會(huì)舍棄缺少數(shù)據(jù)的列(行)

rows = [

? ? ['Number', 'data1', 'data2'],

? ? [2, 40? ? ? ],? ? # 這里少一個(gè)數(shù)據(jù)

? ? [3, 40, 25],

? ? [4, 50, 30],

? ? [5, 30, 10],

? ? [6, 25, 5],

? ? [7, 50, 10],

]

# out

[('Number', 2, 3, 4, 5, 6, 7), ('data1', 40, 40, 50, 30, 25, 50)]

復(fù)制代碼

10. 設(shè)置單元格風(fēng)格

① 需要導(dǎo)入的類(lèi)

from openpyxl.styles import Font, colors, Alignment

② 字體

下面的代碼指定了等線24號(hào),加粗斜體,字體顏色紅色。直接使用cell的font屬性,將Font對(duì)象賦值給它。

bold_itatic_24_font = Font(name='等線', size=24, italic=True, color=colors.RED, bold=True)

sheet['A1'].font = bold_itatic_24_font

③ 對(duì)齊方式

也是直接使用cell的屬性aligment,這里指定垂直居中和水平居中。除了center,還可以使用right、left等等參數(shù)

# 設(shè)置B1中的數(shù)據(jù)垂直居中和水平居中

sheet['B1'].alignment = Alignment(horizontal='center', vertical='center')

④ 設(shè)置行高和列寬

# 第2行行高

sheet.row_dimensions[2].height = 40

# C列列寬

sheet.column_dimensions['C'].width = 30

⑤ 合并和拆分單元格

所謂合并單元格,即以合并區(qū)域的左上角的那個(gè)單元格為基準(zhǔn),覆蓋其他單元格使之稱(chēng)為一個(gè)大的單元格。

相反,拆分單元格后將這個(gè)大單元格的值返回到原來(lái)的左上角位置。

# 合并單元格, 往左上角寫(xiě)入數(shù)據(jù)即可

sheet.merge_cells('B1:G1') # 合并一行中的幾個(gè)單元格

sheet.merge_cells('A1:C3') # 合并一個(gè)矩形區(qū)域中的單元格

合并后只可以往左上角寫(xiě)入數(shù)據(jù),也就是區(qū)間中:左邊的坐標(biāo)。

如果這些要合并的單元格都有數(shù)據(jù),只會(huì)保留左上角的數(shù)據(jù),其他則丟棄。換句話說(shuō)若合并前不是在左上角寫(xiě)入數(shù)據(jù),合并后單元格中不會(huì)有數(shù)據(jù)。

以下是拆分單元格的代碼。拆分后,值回到A1位置

sheet.unmerge_cells('A1:C3')

最后舉個(gè)例子

復(fù)制代碼

import datetime

from random import choice

from time import time

from openpyxl import load_workbook

from openpyxl.utils import get_column_letter

# 設(shè)置文件 mingc

addr = "openpyxl.xlsx"

# 打開(kāi)文件

wb = load_workbook(addr)

# 創(chuàng)建一張新表

ws = wb.create_sheet()

# 第一行輸入

ws.append(['TIME', 'TITLE', 'A-Z'])

# 輸入內(nèi)容(500行數(shù)據(jù))

for i in range(500):

? ? TIME = datetime.datetime.now().strftime("%H:%M:%S")

? ? TITLE = str(time())

? ? A_Z = get_column_letter(choice(range(1, 50)))

? ? ws.append([TIME, TITLE, A_Z])

# 獲取最大行

row_max = ws.max_row

# 獲取最大列

con_max = ws.max_column

# 把上面寫(xiě)入內(nèi)容打印在控制臺(tái)

for j in ws.rows:? ? # we.rows 獲取每一行數(shù)據(jù)

? ? for n in j:

? ? ? ? print(n.value, end="\t")? # n.value 獲取單元格的值

? ? print()

# 保存,save(必須要寫(xiě)文件名(絕對(duì)地址)默認(rèn) py 同級(jí)目錄下,只支持 xlsx 格式)

wb.save(addr)

復(fù)制代碼

分類(lèi): python模塊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容