python 小技巧記錄
- 我發現
- 1、str轉bool方法
- 2、python判斷文件和文件夾是否存在、創建文件夾
- 3、文件操作
- 4、python字典遍歷的幾種方法
- 4.1、遍歷key值
- 4.2、遍歷value值
- 4.3、遍歷字典項
- 4.4、遍歷字典健值
- 5、Python 列表(List) 的三種遍歷(序號和值)方法
- 6、python字典判斷某個Key是否存在
我發現
好多有用的小技巧其實都不難,但是每次用的時候,我都要去百度,主要是懶得去記,剛好突然有個想法,總結一些實用小技巧,歸類整理,免得到處百度,浪費不必要的時間:
1、str轉bool方法
python中字符串“True” 和 “False"轉為bool類型時, 不能通過bool(xx)強轉。
注意是因為在python中,除了’’、""、0、()、[]、{}、None為False, 其他轉換都為True。 也就是說字符串如果不為空,則永遠轉換為True。
好吧, 只能通過這樣了:
data = “True”
isTrue = data == str(True)
此時isTrue則是bool類型
2、python判斷文件和文件夾是否存在、創建文件夾
python中對文件、文件夾(文件操作函數)的操作需要涉及到os模塊和shutil模塊。
先給出一大堆的API說明吧:(
注釋綠色標記
常用到的API, 也就三到四個)
得到當前工作目錄,即當前Python腳本工作的目錄路徑
:
os
.
getcwd
(
)
返回指定目錄下的所有文件和目錄名
:
os
.
listdir
(
)
'''函數用來刪除一個文件:os.remove()'''
刪除多個目錄:os
.
removedirs(r“c:\python”)
檢驗給出的路徑是否是一個文件:os
.
path
.
isfile
(
)
檢驗給出的路徑是否是一個目錄:os
.
path
.
isdir
(
)
判斷是否是絕對路徑:os
.
path
.
isabs
(
)
'''檢驗給出的路徑是否真地存:os.path.exists()'''
返回一個路徑的目錄名和文件名
:
os
.
path
.
split
(
)
eg os
.
path
.
split
(
'/home/swaroop/byte/code/poem.txt'
)
結果:
(
'/home/swaroop/byte/code'
,
'poem.txt'
)
分離擴展名:os
.
path
.
splitext
(
)
獲取路徑名:os
.
path
.
dirname
(
)
獲取文件名:os
.
path
.
basename
(
)
運行shell命令
:
os
.
system
(
)
讀取和設置環境變量
:
os
.
getenv
(
)
與os
.
putenv
(
)
給出當前平臺使用的行終止符
:
os
.
linesep Windows使用
'\r\n'
,Linux使用
'\n'
而Mac使用
'\r'
指示你正在使用的平臺:os
.
name 對于Windows,它是
'nt'
,而對于Linux
/
Unix用戶,它是
'posix'
'''重命名:os.rename(old, new)'''
'''創建多級目錄:os.makedirs(r'c:\python\test')'''
創建單個目錄:os
.
mkdir(“test”)
獲取文件屬性:os
.
stat(
file
)
修改文件權限與時間戳:os
.
chmod(
file
)
'''終止當前進程:os.exit()'''
'''獲取文件大小:os.path.getsize(filename)'''
3、文件操作
實用方式:
with
open
(
'path\file_name'
,
'r+'
)
as
file_obj
:
contents
=
file_obj
.
read
(
)
print
(
contents
)
API解讀
os
.
mknod
(
"test.txt"
)
創建空文件
fp
=
open
(
"test.txt"
,
w
)
直接打開一個文件,如果文件不存在則創建文件
關于
open
模式:
w 以寫方式打開,
a 以追加模式打開
(
從 EOF 開始
,
必要時創建新文件
)
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
r
+
以讀寫模式打開
w
+
以讀寫模式打開
(
參見 w
)
a
+
以讀寫模式打開
(
參見 a
)
rb 以二進制讀模式打開
wb 以二進制寫模式打開
(
參見 w
)
ab 以二進制追加模式打開
(
參見 a
)
rb
+
以二進制讀寫模式打開
(
參見 r
+
)
wb
+
以二進制讀寫模式打開
(
參見 w
+
)
ab
+
以二進制讀寫模式打開
(
參見 a
+
)
'''
文件API解讀
'''
fp
.
read
(
[
size
]
)
'''size為讀取的長度,以byte為單位 (如果未給定或為負則讀取所有)'''
fp
.
readline
(
[
size
]
)
'''讀一行,如果定義了size,有可能返回的只是一行的一部分(包括 "\n" 字符)'''
fp
.
readlines
(
[
size
]
)
'''把文件每一行作為一個list的一個成員,并返回這個list。
其實它的內部是通過循環調用readline()來實現的。
如果提供size參數,size是表示讀取內容的總長,也就是說可能只讀到文件的一部分。
'''
fp
.
write
(
str
)
'''把str寫到文件中,write()并不會在str后加上一個換行符'''
fp
.
writelines
(
seq
)
'''把seq的內容全部寫到文件中(多行一次性寫入)。
這個函數也只是忠實地寫入,不會在每行后面加上任何東西。'''
fp
.
close
(
)
'''關閉文件。python會在一個文件不用后自動關閉文件,
不過這一功能沒有保證,最好還是養成自己關閉的習慣。
如果一個文件在關閉后還對其進行操作會產生ValueError'''
fp
.
flush
(
)
'''把緩沖區的內容寫入硬盤'''
fp
.
fileno
(
)
'''返回一個長整型的”文件標簽“'''
fp
.
isatty
(
)
'''文件是否是一個終端設備文件(unix系統中的)'''
fp
.
tell
(
)
'''返回文件操作標記的當前位置,以文件的開頭為原點'''
fp
.
next
(
)
'''返回下一行,并將文件操作標記位移到下一行。
把一個file用于for … in file這樣的語句時,
就是調用next()函數來實現遍歷的。'''
fp
.
seek
(
offset
[
,
whence
]
)
'''將文件打操作標記移到offset的位置。這個offset一般是相對于文件的開頭來計算的,
一般為正數。但如果提供了whence參數就不一定了,whence可以為0表示從頭開始計算,
1表示以當前位置為原點計算。2表示以文件末尾為原點進行計算。需要注意,
如果文件以a或a+的模式打開,每次進行寫操作時,文件操作標記會自動返回到文件末尾。'''
fp
.
truncate
(
[
size
]
)
'''把文件裁成規定的大小,默認的是裁到當前文件操作標記的位置。
如果size比文件的大小還要大,依據系統的不同可能是不改變文件,
也可能是用0把文件補到相應的大小,也可能是以一些隨機的內容加上去。'''
目錄操作:
os
.
mkdir
(
"file"
)
創建目錄
復制文件:
shutil
.
copyfile
(
"oldfile"
,
"newfile"
)
oldfile和newfile都只能是文件
shutil
.
copy
(
"oldfile"
,
"newfile"
)
oldfile只能是文件夾,newfile可以是文件,也可以是目標目錄
復制文件夾:
shutil
.
copytree
(
"olddir"
,
"newdir"
)
olddir和newdir都只能是目錄,且newdir必須不存在
重命名文件(目錄)
os
.
rename
(
"oldname"
,
"newname"
)
文件或目錄都是使用這條命令
移動文件(目錄)
shutil
.
move
(
"oldpos"
,
"newpos"
)
刪除文件
os
.
remove
(
"file"
)
刪除目錄
os
.
rmdir
(
"dir"
)
只能刪除空目錄
shutil
.
rmtree
(
"dir"
)
空目錄、有內容的目錄都可以刪
轉換目錄
os
.
chdir
(
"path"
)
換路徑
4、python字典遍歷的幾種方法
4.1、遍歷key值
>>
>
a
{
'a'
:
'1'
,
'b'
:
'2'
,
'c'
:
'3'
}
>>
>
for
key
in
a
:
print
(
key
+
':'
+
a
[
key
]
)
a
:
1
b
:
2
c
:
3
>>
>
for
key
in
a
.
keys
(
)
:
print
(
key
+
':'
+
a
[
key
]
)
a
:
1
b
:
2
c
:
3
在使用上,for key in a和 for key in a.keys():完全等價。
4.2、遍歷value值
>>
>
for
value
in
a
.
values
(
)
:
print
(
value
)
1
2
3
4.3、遍歷字典項
>>
>
for
kv
in
a
.
items
(
)
:
print
(
kv
)
(
'a'
,
'1'
)
(
'b'
,
'2'
)
(
'c'
,
'3'
)
4.4、遍歷字典健值
>>
>
for
key
,
value
in
a
.
items
(
)
:
print
(
key
+
':'
+
value
)
a
:
1
b
:
2
c
:
3
>>
>
for
(
key
,
value
)
in
a
.
items
(
)
:
print
(
key
+
':'
+
value
)
a
:
1
b
:
2
c
:
3
在使用上for key,value in a.items()與for (key,value) in a.items()完全等價
5、Python 列表(List) 的三種遍歷(序號和值)方法
#!/usr/bin/env python
# -*- coding: utf-8 -*-
if
__name__
==
'__main__'
:
list
=
[
'html'
,
'js'
,
'css'
,
'python'
]
# 方法1
print
'遍歷列表方法1:'
for
i
in
list
:
print
(
"序號:%s 值:%s"
%
(
list
.
index
(
i
)
+
1
,
i
)
)
print
'\n遍歷列表方法2:'
# 方法2
for
i
in
range
(
len
(
list
)
)
:
print
(
"序號:%s 值:%s"
%
(
i
+
1
,
list
[
i
]
)
)
# 方法3
print
'\n遍歷列表方法3:'
for
i
,
val
in
enumerate
(
list
)
:
print
(
"序號:%s 值:%s"
%
(
i
+
1
,
val
)
)
# 方法3
print
'\n遍歷列表方法3 (設置遍歷開始初始位置,只改變了起始序號):'
for
i
,
val
in
enumerate
(
list
,
2
)
:
print
(
"序號:%s 值:%s"
%
(
i
+
1
,
val
)
)
6、python字典判斷某個Key是否存在
第一種方法:使用自帶函數實現(python2)。
在python的字典的屬性方法里面有一個has_key()方法,這個方法使用起來非常簡單。
#生成一個字典
d
=
{
'name'
:
{
}
,
'age'
:
{
}
,
'sex'
:
{
}
}
#打印返回值
print
d
.
has_key
(
'name'
)
#結果返回True
第二種方法:使用in方法(python3)
#生成一個字典
d
=
{
'name'
:
{
}
,
'age'
:
{
}
,
'sex'
:
{
}
}
#打印返回值,其中d.keys()是列出字典所有的key
print
name
in
d
.
keys
(
)
#結果返回True
上面兩種方式,我更 推薦 使用 第二種 ,因為 has_key()是python2.2 之前的方法,而且使用 in 的方法會更快一些。
最后告訴大家一點:除了使用 in 還可以使用 not in ,判定這個key不存在哦~
ps: 未完待續…
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
