日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python学习记录day3

發布時間:2025/5/22 python 163 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python学习记录day3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Python學習記錄 day3

今天是銀角大王武sir講課。先回顧了上節課所學,然后講到了面向對象思想。

set

set是一個無序且不重復,可嵌套的元素集合

class?set(object):"""set()?->?new?empty?set?objectset(iterable)?->?new?set?objectBuild?an?unordered?collection?of?unique?elements."""def?add(self,?*args,?**kwargs):?#?real?signature?unknown"""?添加?""""""Add?an?element?to?a?set.This?has?no?effect?if?the?element?is?already?present."""passdef?clear(self,?*args,?**kwargs):?#?real?signature?unknown"""?Remove?all?elements?from?this?set.?"""passdef?copy(self,?*args,?**kwargs):?#?real?signature?unknown"""?Return?a?shallow?copy?of?a?set.?"""passdef?difference(self,?*args,?**kwargs):?#?real?signature?unknown"""Return?the?difference?of?two?or?more?sets?as?a?new?set.(i.e.?all?elements?that?are?in?this?set?but?not?the?others.)"""passdef?difference_update(self,?*args,?**kwargs):?#?real?signature?unknown"""?刪除當前set中的所有包含在?new?set?里的元素?""""""?Remove?all?elements?of?another?set?from?this?set.?"""passdef?discard(self,?*args,?**kwargs):?#?real?signature?unknown"""?移除元素?""""""Remove?an?element?from?a?set?if?it?is?a?member.If?the?element?is?not?a?member,?do?nothing."""passdef?intersection(self,?*args,?**kwargs):?#?real?signature?unknown"""?取交集,新創建一個set?""""""Return?the?intersection?of?two?or?more?sets?as?a?new?set.(i.e.?elements?that?are?common?to?all?of?the?sets.)"""passdef?intersection_update(self,?*args,?**kwargs):?#?real?signature?unknown"""?取交集,修改原來set?""""""?Update?a?set?with?the?intersection?of?itself?and?another.?"""passdef?isdisjoint(self,?*args,?**kwargs):?#?real?signature?unknown"""?如果沒有交集,返回true??""""""?Return?True?if?two?sets?have?a?null?intersection.?"""passdef?issubset(self,?*args,?**kwargs):?#?real?signature?unknown"""?是否是子集?""""""?Report?whether?another?set?contains?this?set.?"""passdef?issuperset(self,?*args,?**kwargs):?#?real?signature?unknown"""?是否是父集?""""""?Report?whether?this?set?contains?another?set.?"""passdef?pop(self,?*args,?**kwargs):?#?real?signature?unknown"""?移除?""""""Remove?and?return?an?arbitrary?set?element.Raises?KeyError?if?the?set?is?empty."""passdef?remove(self,?*args,?**kwargs):?#?real?signature?unknown"""?移除?""""""Remove?an?element?from?a?set;?it?must?be?a?member.If?the?element?is?not?a?member,?raise?a?KeyError."""passdef?symmetric_difference(self,?*args,?**kwargs):?#?real?signature?unknown"""?差集,創建新對象""""""Return?the?symmetric?difference?of?two?sets?as?a?new?set.(i.e.?all?elements?that?are?in?exactly?one?of?the?sets.)"""passdef?symmetric_difference_update(self,?*args,?**kwargs):?#?real?signature?unknown"""?差集,改變原來?""""""?Update?a?set?with?the?symmetric?difference?of?itself?and?another.?"""passdef?union(self,?*args,?**kwargs):?#?real?signature?unknown"""?并集?""""""Return?the?union?of?sets?as?a?new?set.(i.e.?all?elements?that?are?in?either?set.)"""passdef?update(self,?*args,?**kwargs):?#?real?signature?unknown"""?更新?""""""?Update?a?set?with?the?union?of?itself?and?others.?"""passdef?__and__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__and__(y)?<==>?x&y?"""passdef?__cmp__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__cmp__(y)?<==>?cmp(x,y)?"""passdef?__contains__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__contains__(y)?<==>?y?in?x.?"""passdef?__eq__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__eq__(y)?<==>?x==y?"""passdef?__getattribute__(self,?name):?#?real?signature?unknown;?restored?from?__doc__"""?x.__getattribute__('name')?<==>?x.name?"""passdef?__ge__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__ge__(y)?<==>?x>=y?"""passdef?__gt__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__gt__(y)?<==>?x>y?"""passdef?__iand__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__iand__(y)?<==>?x&=y?"""passdef?__init__(self,?seq=()):?#?known?special?case?of?set.__init__"""set()?->?new?empty?set?objectset(iterable)?->?new?set?objectBuild?an?unordered?collection?of?unique?elements.#?(copied?from?class?doc)"""passdef?__ior__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__ior__(y)?<==>?x|=y?"""passdef?__isub__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__isub__(y)?<==>?x-=y?"""passdef?__iter__(self):?#?real?signature?unknown;?restored?from?__doc__"""?x.__iter__()?<==>?iter(x)?"""passdef?__ixor__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__ixor__(y)?<==>?x^=y?"""passdef?__len__(self):?#?real?signature?unknown;?restored?from?__doc__"""?x.__len__()?<==>?len(x)?"""passdef?__le__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__le__(y)?<==>?x<=y?"""passdef?__lt__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__lt__(y)?<==>?x<y?"""pass@staticmethod?#?known?case?of?__new__def?__new__(S,?*more):?#?real?signature?unknown;?restored?from?__doc__"""?T.__new__(S,?...)?->?a?new?object?with?type?S,?a?subtype?of?T?"""passdef?__ne__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__ne__(y)?<==>?x!=y?"""passdef?__or__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__or__(y)?<==>?x|y?"""passdef?__rand__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__rand__(y)?<==>?y&x?"""passdef?__reduce__(self,?*args,?**kwargs):?#?real?signature?unknown"""?Return?state?information?for?pickling.?"""passdef?__repr__(self):?#?real?signature?unknown;?restored?from?__doc__"""?x.__repr__()?<==>?repr(x)?"""passdef?__ror__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__ror__(y)?<==>?y|x?"""passdef?__rsub__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__rsub__(y)?<==>?y-x?"""passdef?__rxor__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__rxor__(y)?<==>?y^x?"""passdef?__sizeof__(self):?#?real?signature?unknown;?restored?from?__doc__"""?S.__sizeof__()?->?size?of?S?in?memory,?in?bytes?"""passdef?__sub__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__sub__(y)?<==>?x-y?"""passdef?__xor__(self,?y):?#?real?signature?unknown;?restored?from?__doc__"""?x.__xor__(y)?<==>?x^y?"""pass__hash__?=?None set >>>?se?=?{"123","456"} >>>?print(se) {'456',?'123'} >>>?li?=?[11,22,11,22] >>>?s?=?set(li) >>>?print(s) {11,?22}

list創建有2種方式:

1)li = [ ]

2)list(),原理是調用__init__,內部執行for循環將元素添加到list中。

b.操作集合

>>>?s.add(234) >>>?print(s) {234,?11,?22} >>>?s1?=?{11,22,33} >>>?s2?=?{22,33,44} >>>?s3?=?s1.difference(s2) >>>?#A存在,B中不存在 >>>?s4?=?s2.difference(s1) >>>?print(s3,s4) {11}?{44} >>>?s5?=?s1.symmetric_difference(s2) >>>?#把A中存在,B中不存在拿出來,把B中存在,A中不存在拿出來,組合起來。即對稱差別 >>>?print(s5) {11,?44}

c.直接更新

>>>?s1.difference_update(s2) >>>?print(s1) {11} >>>?s1.symmetric_difference_update(s2) >>>?print(s1) {33,?11,?44,?22}

d.移除

>>>?print(s1) {33,?11,?44,?22} >>>?s1.discard(1111)?????#不存在,不報錯 >>>?print(s1) {33,?11,?44,?22} >>>?s1.remove(11) >>>?print(s1) {33,?44,?22} >>>?s1.remove(1111)?????#不存在,報錯 Traceback?(most?recent?call?last):File?"<stdin>",?line?1,?in?<module> KeyError:?1111 >>>?s1.pop()?????#隨機移除 33 >>>?print(s1) {44,?22} >>>?ret?=?s1.pop() >>>?print(s1) {22} >>>?print(ret) 44

e.交集

>>>?s1?=?{11,22,33} >>>?s2?=?{22,33,44} >>>?s3?=?s1.intersection(s2) >>>?print(s3) {33,?22}

f.子集,父集

>>>?s1?=?{11,22,33} >>>?s2?=?{11,22} >>>?s1.issubset(s2) False >>>?s1.issuperset(s2) True >>>?s2.issubset(s1) True

g.更新(批量添加)

>>>?print(s1) {33,?11,?22} >>>?li?=?[11,22,33,44,55,11,22] >>>?s1.update(li)?????#接收可迭代的參數 >>>?print(s1) {33,?11,?44,?22,?55} >>>?li?=?"abcd" >>>?s1.update(li) >>>?print(s1) {33,?'d',?'a',?11,?44,?'b',?'c',?22,?55}

練習題:

#!/usr/bin/env?python #_*_coding:utf-8_*_ '''*?Created?on?2016/10/23?15:54.*?@author:?Chinge_Yang. ''' #練習:尋找差異 #?數據庫中原有 old_dict?=?{"#1":?{'hostname':?"c1",?'cpu_count':?2,?'mem_capicity':?80},"#2":?{'hostname':?"c1",?'cpu_count':?2,?'mem_capicity':?80},"#3":?{'hostname':?"c1",?'cpu_count':?2,?'mem_capicity':?80} } #?cmdb?新匯報的數據 new_dict?=?{"#1":?{'hostname':?"c1",?'cpu_count':?2,?'mem_capicity':?800},"#3":?{'hostname':?"c1",?'cpu_count':?2,?'mem_capicity':?80},"#4":?{'hostname':?"c2",?'cpu_count':?2,?'mem_capicity':?80} } #?需要刪除:? #?需要新建:? #?需要更新:??注意:無需考慮內部元素是否改變,只要原來存在,新匯報也存在,就是需要更新 #轉成集合 old_set?=?set(old_dict.keys()) new_set?=?set(new_dict.keys()) print("need?to?delete:%s"?%?old_set.difference(new_set)) print("need?to?create:%s"?%?new_set.difference(old_dict)) print("need?to?update:%s"?%?old_set.intersection(new_set)) #demo ''' old_set?=?set(old_dict.keys()) update_list?=?list(old_set.intersection(new_dict.keys())) new_list?=?[] del_list?=?[] for?i?in?new_dict.keys():if?i?not?in?update_list:new_list.append(i) for?i?in?old_dict.keys():if?i?not?in?update_list:del_list.append(i) print?(update_list,new_list,del_list) '''

函數式編程

作用:增加重用性和可讀性

def?函數名?()?:...函數體...返回值

函數的定義主要有如下要點:

  • def:表示函數的關鍵字

  • 函數名:函數的名稱,日后根據函數名調用函數

  • 函數體:函數中進行一系列的邏輯計算,如:顯示幫助,打印版本等...

  • 參數:為函數體提供數據

  • 返回值:當函數執行完畢后,可以給調用者返回數據。

def?test(): try:... except:... else:...

try:要執行的代碼

except:try里面的代碼執行失敗則執行里面的代碼

else:try里面的代碼執行成功則執行里面的代碼

1.返回值

函數是一個功能塊,該功能到底執行成功與否,需要通過返回值來告知調用者。

以上要點中,比較重要有參數和返回值:

return:在函數中, 一旦執行,函數執行過程立即終止。

2.參數

參數的作用:

增加代碼可重用性

函數的有三中不同的參數:

  • 普通參數

  • 默認參數(必須放到參數列表的最后)

  • 指定參數

  • 動態參數(一個*,數據類型為元組;二個*,數據類型為字典)

  • 萬能參數(*args,**kwargs)


* ? ? 默認將傳入的參數,全部放置在元組中,f1(*[1,2,3,4])

** ? ? 默認將傳入的參數,全部放置在字典中,f1(**{"k1":"v1","k2":"v2"}

普通參數:

#?#########?定義函數?######### #?name?叫做函數func的形式參數,簡稱:形參 def?func(name):print?name #?#########?執行函數?######### #??'test'?叫做函數func的實際參數,簡稱:實參 func('test')

默認參數:

def?func(name,age?=?27):?????#默認參數放置最后print(name,age) func("ygqygq2") func("test",33)


ygqygq2 27

test 33

指定參數:

def?func(name,age):print(name,age) func(age=27,name="ygqygq2")

動態參數:

def?func(*name):print(name,type(name)) func("ygqygq2")

('ygqygq2',) <class 'tuple'>

def?func(*name):print(name,type(name)) func(*"ygqygq2")

('y', 'g', 'q', 'y', 'g', 'q', '2') <class 'tuple'>

{'age':?27,?'name':?'ygqygq2'} def?func(**kwargs):print(kwargs) dic?=?{"name":?"ygqygq2",?"age":?27} func(kk=dic)

{'kk': {'age': 27, 'name': 'ygqygq2'}}

def?func(**kwargs):print(kwargs) dic={"name":"ygqygq2","age":27} func(**dic)

{'name': 'ygqygq2', 'age': 27}

萬能參數:

def?func(*args,**kwargs):print(args)print(kwargs) tu?=?(1,2,3,4) dic={"name":"ygqygq2","age":27} func(*tu,**dic)

(1, 2, 3, 4)

{'name': 'ygqygq2', 'age': 27}

利用動態參數實現格式化輸出

str.format() ? ? #格式化輸出

str1?=?"This?is?a?{0},{1}".format("test","test1") print(str1) str2?=?"This?is?a?{0},{1}".format(*["test","test1"]) print(str2)

This is a test,test1

This is a test,test1

str1?=?"I?am?{name},age?{age}".format(name="ygqygq2",age=27) print(str1) dict?=?{"name":"ygqygq2","age":27} str2?=?"I?am?{name},age?{age}".format(**dict) print(str2)

I am ygqygq2,age 27

I am ygqygq2,age 27

函數補充:

1.存在同名函數時,執行的是后面定義的

def?func1(num):return?num?+?num def?func1(num):return?num*num res?=?func1(8) print(res) name?=?"test" name?=?"ygqygq2" print(name)

64

ygqygq2


2.函數參數傳遞的是引用

def?func1(a1):a1.append(888) li?=?[1,2,3,4] func1(li) print(li)

[1, 2, 3, 4, 888]


3.全局變量

  • 全局變量,所有作用域都可讀,定義時,變量名全部使用大寫字母

  • 對全局變量進行【重新賦值】,需要添加global關鍵字

  • 特殊:列表、字典,可修改,不可重新賦值


三元運算

三元運算(三目運算),是對簡單的條件語句的縮寫。

#?書寫格式 result?=?值1?if?條件?else?值2 #?如果條件成立,那么將?“值1”?賦值給result變量,否則,將“值2”賦值給result變量

lambda表達式

#?定義函數(lambda表達式) my_lambda?=?lambda?arg?:?arg?+?1 #?執行函數 result?=?my_lambda(123)

內置函數

abs(-1) ? ? ?#獲取絕對值

all() ? ? #所有為真才為真

any() ? ? #只要有真則為真

ascii() ? ? #獲取一個對象的repr方法的值

bin() ? ? #把10進制轉換成二進制


Built-in Functions
abs()dict()help()min()setattr()
all()dir()hex()next()slice()
any()divmod()id()object()sorted()
ascii()enumerate()input()oct()staticmethod()
bin()eval()int()open()str()
bool()exec()isinstance()ord()sum()
bytearray()filter()issubclass()pow()super()
bytes()float()iter()print()tuple()
callable()format()len()property()type()
chr()frozenset()list()range()vars()
classmethod()getattr()locals()repr()zip()
compile()globals()map()reversed()__import__()
complex()hasattr()max()round()
delattr()hash()memoryview()set()

詳細請看官方文檔。

一、數學運算類

abs(x)?返回一個數的絕對值。參數可能是整數或浮點數。如果參數是一個復數,返回它的大小。
complex([real[, imag]])創建一個復數
divmod(a, b)分別取商和余數
注意:整型、浮點型都可以
float([x])將一個字符串或數轉換為浮點數。如果無參數將返回0.0
int([x[, base]])?將一個字符轉換為int類型,base表示進制
long([x[, base]])?將一個字符轉換為long類型
pow(x, y[, z])?返回x的y次冪
range([start], stop[, step])?產生一個序列,默認從0開始
round(x[, n])?四舍五入
sum(iterable[, start])?對集合求和
oct(x)將一個數字轉化為8進制
hex(x)將整數x轉換為16進制字符串
chr(i)返回整數i對應的ASCII字符
bin(x)將整數x轉換為二進制字符串
bool([x])將x轉換為Boolean類型

?

二、集合類操作

basestring()str和unicode的超類
不能直接調用,可以用作isinstance判斷
format(value [, format_spec])格式化輸出字符串
格式化的參數順序從0開始,如“I am {0},I like {1}”
unichr(i)返回給定int類型的unicode
enumerate(sequence [, start = 0])返回一個可枚舉的對象,該對象的next()方法將返回一個tuple
iter(o[, sentinel])生成一個對象的迭代器,第二個參數表示分隔符
max(iterable[, args...][key])?返回集合中的最大值
min(iterable[, args...][key])返回集合中的最小值
dict([arg])創建數據字典
list([iterable])?將一個集合類轉換為另外一個集合類
set()set對象實例化
frozenset([iterable])產生一個不可變的set
str([object])?轉換為string類型
sorted(iterable[, cmp[, key[, reverse]]])?隊集合排序
tuple([iterable])?生成一個tuple類型
xrange([start], stop[, step])?xrange()函數與range()類似,但xrnage()并不創建列表,而是返回一個xrange對象,它的行為與列表相似,但是只在需要時才計算列表值,當列表很大時,這個特性能為我們節省內存

?

三、邏輯判斷

all(iterable)1、集合中的元素都為真的時候為真
2、特別的,若為空串返回為True
any(iterable)1、集合中的元素有一個為真的時候為真
2、特別的,若為空串返回為False
cmp(x, y)如果x < y ,返回負數;x == y, 返回0;x > y,返回正數

?

四、反射

callable(object)檢查對象object是否可調用
1、類是可以被調用的
2、實例是不可以被調用的,除非類中聲明了__call__方法
classmethod()1、注解,用來說明這個方式是個類方法
2、類方法即可被類調用,也可以被實例調用
3、類方法類似于Java中的static方法
4、類方法中不需要有self參數
compile(source, filename, mode[, flags[, dont_inherit]])將source編譯為代碼或者AST對象。代碼對象能夠通過exec語句來執行或者eval()進行求值。
1、參數source:字符串或者AST(Abstract Syntax Trees)對象。
2、參數 filename:代碼文件名稱,如果不是從文件讀取代碼則傳遞一些可辨認的值。
3、參數model:指定編譯代碼的種類。可以指定為 ‘exec’,’eval’,’single’。
4、參數flag和dont_inherit:這兩個參數暫不介紹
dir([object])1、不帶參數時,返回當前范圍內的變量、方法和定義的類型列表;
2、帶參數時,返回參數的屬性、方法列表。
3、如果參數包含方法__dir__(),該方法將被調用。當參數為實例時。
4、如果參數不包含__dir__(),該方法將最大限度地收集參數信息
delattr(object, name)刪除object對象名為name的屬性
eval(expression [, globals [, locals]])計算表達式expression的值
execfile(filename [, globals [, locals]])用法類似exec(),不同的是execfile的參數filename為文件名,而exec的參數為字符串。
filter(function, iterable)構造一個序列,等價于[ item for item in iterable if function(item)]
1、參數function:返回值為True或False的函數,可以為None
2、參數iterable:序列或可迭代對象
getattr(object, name [, defalut])獲取一個類的屬性
globals()返回一個描述當前全局符號表的字典
hasattr(object, name)判斷對象object是否包含名為name的特性
hash(object)如果對象object為哈希表類型,返回對象object的哈希值
id(object)返回對象的唯一標識
isinstance(object, classinfo)判斷object是否是class的實例
issubclass(class, classinfo)判斷是否是子類
len(s)?返回集合長度
locals()?返回當前的變量列表
map(function, iterable, ...)?遍歷每個元素,執行function操作
memoryview(obj)?返回一個內存鏡像類型的對象
next(iterator[, default])?類似于iterator.next()
object()?基類
property([fget[, fset[, fdel[, doc]]]])?屬性訪問的包裝類,設置后可以通過c.x=value等來訪問setter和getter
reduce(function, iterable[, initializer])?合并操作,從第一個開始是前兩個參數,然后是前兩個的結果與第三個合并進行處理,以此類推
reload(module)?重新加載模塊
setattr(object, name, value)設置屬性值
repr(object)?將一個對象變幻為可打印的格式
slice()
staticmethod聲明靜態方法,是個注解
super(type[, object-or-type])?引用父類
type(object)返回該object的類型
vars([object])?返回對象的變量,若無參數與dict()方法類似
bytearray([source [, encoding [, errors]]])返回一個byte數組
1、如果source為整數,則返回一個長度為source的初始化數組;
2、如果source為字符串,則按照指定的encoding將字符串轉換為字節序列;
3、如果source為可迭代類型,則元素必須為[0 ,255]中的整數;
4、如果source為與buffer接口一致的對象,則此對象也可以被用于初始化bytearray.
zip([iterable, ...])?實在是沒有看懂,只是看到了矩陣的變幻方面

?

五、IO操作

file(filename [, mode [, bufsize]])file類型的構造函數,作用為打開一個文件,如果文件不存在且mode為寫或追加時,文件將被創建。添加‘b’到mode參數中,將對文件以二進制形式操作。添加‘+’到mode參數中,將允許對文件同時進行讀寫操作
1、參數filename:文件名稱。
2、參數mode:'r'(讀)、'w'(寫)、'a'(追加)。
3、參數bufsize:如果為0表示不進行緩沖,如果為1表示進行行緩沖,如果是一個大于1的數表示緩沖區的大小 。
input([prompt])?獲取用戶輸入
推薦使用raw_input,因為該函數將不會捕獲用戶的錯誤輸入
open(name[, mode[, buffering]])?打開文件
與file有什么不同?推薦使用open
print打印函數
raw_input([prompt])?設置輸入,輸入都是作為字符串處理

?

open函數,該函數用于文件處理

操作文件時,一般需要經歷如下步驟:

  • 打開文件

  • 操作文件

  • 關閉文件

一、打開文件

文件句柄?=?open('文件路徑',?'模式')

打開文件時,需要指定文件路徑和以何等方式打開文件,打開后,即可獲取該文件句柄,日后通過此文件句柄對該文件操作。

打開文件的模式有:

  • r ,只讀模式【默認】

  • w,只寫模式【不可讀;不存在則創建;存在則清空內容;】

  • x, 只寫模式【不可讀;不存在則創建,存在則報錯】

  • a, 追加模式【可讀; ? 不存在則創建;存在則只追加內容;】

"+" 表示可以同時讀寫某個文件

  • r+, 讀寫【可讀,可寫】

  • w+,寫讀【可讀,可寫】

  • x+ ,寫讀【可讀,可寫】

  • a+, 寫讀【可讀,可寫】

?"b"表示以字節的方式操作

  • rb ?或 r+b

  • wb 或 w+b

  • xb?或 w+b

  • ab?或 a+b

?注:以b方式打開時,讀取到的內容是字節類型,寫入時也需要提供字節類型


二、常用文件操作函數

1.f.read(x) ? ? #讀數據,有b,按字節,無b按字符

2.f.seek(x) ? ? #重新定位指針,按字節

3.f.tell() ? ? #獲取指針位置,按字節

4.f.write() ? ? #寫數據,有b,按字節,無b,按字符

5.f.close() ? ? #關閉文件

6.for循環文件對象,讀取數據


????def?close(self,?*args,?**kwargs):?#?real?signature?unknown????????關閉文件passdef?fileno(self,?*args,?**kwargs):?#?real?signature?unknown????????文件描述符passdef?flush(self,?*args,?**kwargs):?#?real?signature?unknown????????刷新文件內部緩沖區passdef?isatty(self,?*args,?**kwargs):?#?real?signature?unknown????????判斷文件是否是同意tty設備passdef?read(self,?*args,?**kwargs):?#?real?signature?unknown????????讀取指定字節數據passdef?readable(self,?*args,?**kwargs):?#?real?signature?unknown????????是否可讀passdef?readline(self,?*args,?**kwargs):?#?real?signature?unknown????????僅讀取一行數據passdef?seek(self,?*args,?**kwargs):?#?real?signature?unknown????????指定文件中指針位置passdef?seekable(self,?*args,?**kwargs):?#?real?signature?unknown????????指針是否可操作passdef?tell(self,?*args,?**kwargs):?#?real?signature?unknown????????獲取指針位置passdef?truncate(self,?*args,?**kwargs):?#?real?signature?unknown????????截斷數據,僅保留指定之前數據passdef?writable(self,?*args,?**kwargs):?#?real?signature?unknown????????是否可寫passdef?write(self,?*args,?**kwargs):?#?real?signature?unknown????????寫內容pass


三、管理上下文

為了避免打開文件后忘記關閉,可以通過管理上下文,即:

with?open('log','r')?as?f:...

如此方式,當with代碼塊執行完畢時,內部會自動關閉并釋放文件資源。

在Python 2.7 及以后,with又支持同時對多個文件的上下文進行管理,即:

with?open('log1')?as?obj1,?open('log2')?as?obj2:pass


本文出自 “ygqygq2” 博客,謝絕轉載!

轉載于:https://my.oschina.net/ygqygq2/blog/790982

總結

以上是生活随笔為你收集整理的Python学习记录day3的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。