Python

Made by Ziyang CHEN, Rocky, 陈子阳


Python由荷兰数学计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫作ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。


个人笔记,仅供参考 (FOR REFERENCE ONLY)


1. Basic Python syntax

Identifiers

1
2
3
# Identifiers 可以由字母、数字、下划线组成, 但开头只能 letter or underscore (“_”),不能以 digits 开头
# 区分大小写,不能使用关键字。Python 中默认编码为 ASCII
a1 = 0 ✅ _a1 = 0 ✅ 1a = 0

多行显示

1
2
3
4
5
6
7
# 反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用 """ 或 ''' 跨越多行。
# 我们可以使用 "\" 将一行的语句分为多行显示, total = a+b-c 可以表述为:
total = a + \
b - \
c
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday'] # 语句中包含 [], {} 或 () 括号就不需要使用 "\"aS

引号 & 注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串.
word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句""" # 三引号可以由多行组成,编写 "多行文本" 的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。

'''
我是多行注释
我是多行注释
'''

"""
我是多行注释
我是多行注释
"""

同一行显示多条语句 & 多个变量赋值

1
2
3
4
5
6
7
8
a, b, c = 1, 2, "john" # 多个变量赋值, 两个整型对象 1 和 2 分别分配给变量 a 和 b,字符串对象 "john" 分配给变量 c
print (a,b,c) # 不换行输出: 1 2 john

print('---------')
# print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""
print(a) # 换行输出
print(b, end=" ") # 不换行输出
print(c, end=" ") # 不换行输出
1
2
3
4
1 2 john
---------
1
2 john

六个标准数据类型

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)

1. Numbers(数字)

1
2
3
4
x = 1; y = 1.5 # 同一行显示多条语句,语句之间使用 ";" 分割
a, b, c, d = 20, 5.5, True, 4+3j # Python3 支持 int、float、bool、complex (复数)
print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

2. String(字符串)

  • 字符串截取语法格式:变量[头下标:尾下标:步长], 从左往右以 0 开始, 从右往左以 -1 开始, 下标可以为空表示取到头或尾
1
2
3
4
5
6
7
8
9
10
11
12
13
str='123456789'
print(str) # 123456789, 输出字符串
print(str[0:-1]) # 12345678, 输出第一个到倒数第二个的所有字符
print(str[0]) # 1, 输出字符串第一个字符
print(str[-1]) # 9, 输出字符串最后一个字符
print(str[2:5]) # 345, 输出从第三个开始到第六个的字符(不包含)
print(str[2:]) # 3456789, 输出从第三个开始后的所有字符
print(str[1:5:2]) # 24, 输出从第二个开始到第五个且每隔一个的字符(步长为2)
print(str * 2) # 123456789123456789, 输出字符串两次
print(str + '你好') # 123456789你好, 连接字符串

print('hello\nrunoob') # 使用反斜杠(\)+n转义特殊字符
print(r'hello\nrunoob') # hello\nrunoob, 在字符串前面添加一个 r,表示原始字符串,不会发生转义
1
2
3
4
5
ord() # 返回字符对应的 ASCII / numeric (ordinal) 码
ord("A") = 65

chr() # 返回 ASCII / numeric (ordinal) 码对应的字符
chr(65) = 'A'

ASCII table

3. List(列表)

  • 和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
  • 列表截取的语法格式如下:变量[头下标:尾下标]
1
2
3
4
5
6
7
8
9
10
11
12
13
list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]; tinylist = [123, 'runoob']
print (list) # ['abcd', 786, 2.23, 'runoob', 70.2], 输出完整列表
print (list[0]) # abcd, 输出列表第一个元素
print (list[1:3]) # [786, 2.23], 从第二个开始输出到第三个元素
print (list[2:]) # [2.23, 'runoob', 70.2], 输出从第三个元素开始的所有元素
print (tinylist * 2) # [123, 'runoob', 123, 'runoob'], 输出两次列表
print (list + tinylist) # ['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob'], 连接列表
# 与Python字符串不一样的是,列表中的元素是可以改变的, List 内置了有很多方法,例如 append()、pop() 等等:
a = [1, 2, 3, 4, 5, 6]
a[0] = 9; a[2:5] = [13, 14, 15]
print(a) # [9, 2, 13, 14, 15, 6]
a[2:5] = [] # 将对应的元素值设置为 []
print(a) # [9, 2, 6]
方法 描述
list.append(x) 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。
list.extend(L) 通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。
list.insert(i, x) 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。
list.remove(x) 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.pop([i]) 从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。)
list.clear() 移除列表中的所有项,等于del a[:]。
list.index(x) 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
list.count(x) 返回 x 在列表中出现的次数。
list.sort() 对列表中的元素进行排序。
list.reverse() 倒排列表中的元素。
list.copy() 返回列表的浅复制,等于a[:]。

4. Tuple(元组)

  • 元组(tuple)与列表类似,不同之处在于 “元组的元素不能修改”。元组写在小括号 () 里,元素之间用逗号隔开。
  • 元组中的元素类型也可以不相同:
1
2
3
4
5
6
7
8
9
10
11
12
tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )
tinytuple = (123, 'runoob')
print (tuple) # ('abcd', 786, 2.23, 'runoob', 70.2), 输出完整元组
print (tuple[0]) # abcd, 输出元组的第一个元素
print (tuple[1:3]) # (786, 2.23), 输出从第二个元素开始到第三个元素
print (tuple[2:]) # (2.23, 'runoob', 70.2), 输出从第三个元素开始的所有元素
print (tinytuple * 2) # (123, 'runoob', 123, 'runoob'), 输出两次元组
print (tuple + tinytuple) # ('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob'), 连接元组
tuple[0] = 11 # 修改元组元素的操作是非法的
# 虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
方法及描述 实例
len(tuple)
计算元组元素个数。
tuple1 = ('Google', 'Runoob', 'Taobao')
len(tuple1) = 3
max(tuple)
返回元组中元素最大值。
>>> tuple2 = ('5', '4', '8')
max(tuple2) = '8'
min(tuple)
返回元组中元素最小值。
>>> tuple2 = ('5', '4', '8')
min(tuple2) = '4'
tuple(iterable)
将可迭代系列转换为元组。
>>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu']
>>> tuple1 = tuple(list1)
tuple1 = ('Google', 'Taobao', 'Runoob', 'Baidu')

5. Set(集合)

  • 是一种无序、可变的数据类型, 集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
  • 集合使用大括号 {} 表示,元素之间用逗号 “,” 分隔。
  • 另外,也可以使用 set() 函数创建集合
1
2
3
4
5
6
7
8
9
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
print(sites) # 输出集合,重复的元素被自动去掉: {'Zhihu', 'Baidu', 'Taobao', 'Runoob', 'Google', 'Facebook'}
# set可以进行集合运算
a = set('abracadabra'); b = set('alacazam')
print(a) # 无序输出所有元素: {'d', 'c', 'r', 'b', 'a'}
print(a - b) # 无序输出 a 和 b 的差集: {'d', 'b', 'r'}
print(a | b) # 无序输出 a 和 b 的并集: {'l', 'm', 'd', 'c', 'r', 'b', 'a', 'z'}
print(a & b) # 无序输出 a 和 b 的交集: {'a', 'c'}
print(a ^ b) # 无序输出 a 和 b 中不同时存在的元素: {'l', 'm', 'r', 'b', 'd', 'z'}
集合内置方法 描述
add() 为集合添加元素
clear() 移除集合中的所有元素
copy() 拷贝一个集合
difference() 返回多个集合的差集
difference_update() 移除集合中的元素,该元素在指定的集合也存在。
discard() 删除集合中指定的元素
intersection() 返回集合的交集
intersection_update() 返回集合的交集。
isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset() 判断指定集合是否为该方法参数集合的子集。
issuperset() 判断该方法的参数集合是否为指定集合的子集
pop() 随机移除元素
remove() 移除指定元素
symmetric_difference() 返回两个集合中不重复的元素集合。
symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union() 返回两个集合的并集
update() 给集合添加元素

6. Dictionary(字典)

  • 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
  • 字典是一种映射类型,用 { } 标识,它是一个无序的 {键(key) : 值(value)} 的集合。键(key)必须使用不可变类型。
  • 在同一个字典中,键(key)必须是唯一的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
dict = {} # 创建空字典
dict['one'] = "1 - 菜鸟教程"
dict[2] = "2 - 菜鸟工具"
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['one']) # 输出键为 'one' 的值: 1 - 菜鸟教程
print (dict[2]) # 输出键为 2 的值: 2 - 菜鸟工具
print (tinydict) # 输出完整的字典: {'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
print (tinydict.keys()) # 输出所有键: dict_keys(['name', 'code', 'site'])
print (tinydict.values()) # 输出所有值: dict_values(['runoob', 1, 'www.runoob.com'])
del tinydict['name'] # 删除键是'name'的条目
tinydict.clear() # 清空字典所有条目
del tinydict # 删除字典

dict() # 创建空字典
dict(a='a',b='6',t='t') # 传入关键字, {'a': 'a', 'b': 'b', 't': 't'}
dict(zip(['one', 'two', 'three'], [1, 23]) # 映射函数方式来构造字典
dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典

for i in tinydict:
print(i, end = " ") # 遍历字典所有键: name code site
函数及描述 实例
len(dict)
计算字典元素个数,即键的总数。
>>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
len(tinydict) = 3
str(dict)
输出字典,可以打印的字符串表示。
>>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
str(tinydict) = "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。
>>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
type(tinydict) = <class 'dict'>

Python字典包含了以下内置方法:

函数 描述
dict.clear() 删除字典内所有元素
dict.copy() 返回一个字典的浅复制
dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
dict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值
key in dict 如果键在字典dict里返回true,否则返回false
dict.items() 以列表返回一个视图对象
dict.keys() 返回一个视图对象
dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
dict.update(dict2) 把字典dict2的键/值对更新到dict里
dict.values() 返回一个视图对象
pop(key[,default]) 删除字典 key(键)所对应的值,返回被删除的值
popitem() 返回并删除字典中的最后一对键和值

数据类型转换

1
2
3
4
5
6
x = int(2.8) # 强制转换为整型, x 输出结果为 2
y = float(1) # 强制转换为浮点型, y 输出结果为 1.0
z = str(6.0) # 强制转换为字符串类型, z 输出结果为 '6.0'

a = x+y; print(a, type(a)) # 3.0 <class 'float'>
z = float(z); print(z, type(z)) # 6.0 <class 'float'>

if 语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
age = int(input("请输入你家狗狗的年龄: "))
print("")
if age <= 0:
print("你是在逗我吧!")
elif age == 1:
print("相当于 14 岁的人。")
elif age == 2:
print("相当于 22 岁的人。")
else age > 2:
human = 22 + (age -2)*5
print("对应人类年龄: ", human)

### 退出提示
input("点击 enter 键退出")

循环语句

1
2
3
4
5
var = 1
while var == 1 : # 表达式永远为 true, 无限循环
num = int(input("输入一个数字 :"))
print ("你输入的数字是: ", num)
print ("Good bye!")
1
2
3
4
5
6
count = 0
while count < 5: # 如果 while 后面的条件语句为 false 时,则执行 else 的语句块
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for number in range(1, 6): #  1 到 5 的所有数字:
print(number, end = " ") # 1 2 3 4 5

sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
print(site, end = " ") # Baidu Google Runoob Taobao

# 当循环执行完毕(即遍历完 iterable 中的所有元素)后,会执行 else 子句中的代码,如果在循环过程中遇到了 break 语句,则会中断循环,此时不会执行 else 子句
# break 语句可以"跳出" for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
# continue 语句被用来告诉 Python "跳过"当前循环块中的剩余语句,然后继续进行下一轮循环。
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
if site == "Runoob":
print("菜鸟教程!")
break
print("循环数据 " + site)
else:
print("没有循环数据!")
print("完成循环!")

运算符

运算符 描述 示例
/ 相除 a / b
% 取模 a % b
** a**b 表示 a 的 b 次幂
// 取整除 9 // 4 结果为 2
== 是否相等 a == b
!= 是否不等于 a != b
>= 是否大于等于 a >= b
+= 加法赋值运算符 a += b 等效于 a = a + b
**= 幂赋值运算符 a = b 等效于 a = a**b

Python built-in numeric operations

参数传递

python 中一切都是对象,严格意义我们不能说值传递还是引用传递,应该说传不可变对象和传可变对象。类型属于对象,对象有不同类型的区分,变量是没有类型的(可以通过 id() 函数来查看内存地址变化):

  • 不可变数据 (immutable object):Number(数字)、String(字符串)、Tuple(元组)
  • 可变数据 (mutable object):List(列表)、Dictionary(字典)、Set(集合)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a=[1,2,3] # [1,2,3] 是 List 类型
a="Runoob" # "Runoob" 是 String 类型
# 变量 a 是没有类型,她仅仅是一个 "对象的引用 (一个指针)",可以是指向 List 类型对象,也可以是指向 String 类型对象。

# 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。
a = 5
print(id(a)) # 4372447600
a = 10
print(id(a)) # 4372447760, 改变地址了

# 可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
la=[1,2,3,4]
print(id(la)) # 4296979648
la[2]=5
print(id(la)) # 4296979648

传不可变对象实例:

1
2
3
4
5
6
7
8
9
10
11
def change(a): # 传递的只是 a 的"值(1)",没有影响 a 对象本身。
print(id(a)) # 指向的是同一个对象, 4343070960
a=10 # 如果在 fun(a) 内部修改 a 的值,则是新生成一个 a 的对象
print(id(a)) # 一个新对象, 4343071248

a=1
print(id(a)) # 4343070960
change(a)

print(a) # 1, 仍然是 1, 没有影响 a 对象本身.
print(id(a)) # 4343070960, 地址没变.

传可变对象实例:

1
2
3
4
5
6
7
8
9
10
11
# 可写函数说明
def changeme( mylist ): # 则是将 mylist 真正的传过去,修改后 fun 外部的 mylist 也会受影响
"修改传入的列表"
mylist.append([1,2,3,4])
print (mylist) # [10, 20, 30, [1, 2, 3, 4]]
return

# 调用changeme函数
mylist = [10,20,30]
changeme( mylist )
print (mylist) # [10, 20, 30, [1, 2, 3, 4]], 已被修改!

lambda 匿名函数

虽然 lambda 函数看起来只能写一行,却不等同于 C 或 C++ 的内联函数,内联函数的目的是调用小函数时不占用栈内存从而减少函数调用的开销,提高代码的执行速度。

  1. lambda 只是一个表达式,而不是一个代码块,函数体比 def 简单很多。仅仅能在 lambda 表达式中封装有限的逻辑进去。
1
2
3
4
def add(a, b=1):
return a+b
print(add(10, 20))
print(add(10))

翻译成 lambda 表达式就是:

1
2
3
add_lambda = lambda a, b=1: a+b # ":"前面是函数参数, ":"后面是函数体
print(add_lambda(10, 20))
print(add_lambda(10))
  1. 使用if条件文
1
2
3
get_odd_even = lambda x:'even' if x%2==0 else 'odd'
print(get_odd_even(8))
print(get_odd_even(9))
  1. 无参数表达式
1
2
3
4
5
import random
ran_lambda = lambda: random.random() # 返回0-1的随机数
print(ran_lambda)
print(ran_lambda)
print(ran_lambda)
  1. map函数使用方法

使用map函数会对一个序列对象中的每一个元素应用被传入的函数,并且返回一个包含了所有函数调用结果的一个列表。

1
2
3
4
5
6
# map实现数组元素平方, 第一种方法
def add(x):
return x**2
a = map(add, [1,2,3,4])
# 有一个数组[1,2,3,4]; 通过调用map, map会循环数组里面的每一个元素; 每次循环的元素作为 add() 函数的参数传进去.
print(list(a)) # [1, 4, 9, 16]
1
2
3
# map实现数组元素平方, 第二种方法 lambda
b = map(lambda x:x**2,[1,2,3,4,5])
print(list(b)) # [1, 4, 9, 16, 25]
  1. filter和reduce函数使用方法

filter函数主要作用是基于某一测试函数过滤出一些元素

1
2
3
#在数组中挑出大于0的元素
a=range(-5,5)
print(list(filter(lambda x:x>0,a))) # [1, 2, 3, 4]

reduce 每一步传递当前的和或乘积以及列表中下一个的元素,传给列出的lambda函数。默认序列中的第一个元素初始化了起始值

1
2
3
4
5
6
from functools import reduce
a=[1,2,3,4]
#计算所有序列之和
print(reduce(lambda x,y:x+y,a)) # 10
#计算所有序列之积
print(reduce(lambda x,y:x*y,a)) # 24

File Processing

Python open() 方法用于打开一个文件,并返回文件对象。

在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError

注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

1
open(file, mode='r')

完整的语法格式为:

1
2
3
4
5
6
7
8
9
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: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。

mode 参数有 (默认为文本模式,如果要以二进制模式打开,加上 b):

mode 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(Python 3 不支持)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

方法 描述
file.close() 关闭文件。关闭后文件不能再进行读写操作。
file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
file.fileno() 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
file.isatty() 如果文件连接到一个终端设备返回 True,否则返回 False。
file.next() Python 3 中的 File 对象不支持 next() 方法,返回文件下一行。
file.read([size]) 从文件读取指定的字节数,如果未给定或为负则读取所有。
file.readline([size]) 读取整行,包括 “\n” 字符。
file.readlines([sizeint]) 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
file.seek(offset[, whence]) 移动文件读取指针到指定位置
file.tell() 返回文件当前位置。
file.truncate([size]) 从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。
file.write(str) 将字符串写入文件,返回的是写入的字符长度。
file.writelines(sequence) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

部分内容引用自 Mike_ZhangPython Basic Note, 菜鸟教程的 Python 3 教程


Python
http://example.com/2023/08/01/Python/
Author
Rocky CHEN
Posted on
August 1, 2023
Licensed under