python学习-第6课

一、全局变量命令

全局声明 所有的字母要大写,如:
ENCODING="utf-8"

二、文件操作

1.1.open()函数

open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写
语法
open(name,mode)
参数

name:文件名

mode:对文件操作权限方式,有以下四种权限:
r:读、这是默认模式
w:写
b:二进制
a:追加

将这四种随意组合,意义如下:
rb 以二进制格式打开一个文件用于只读。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
示例
读取1.txt文件

f=open("1.txt","r")
也可以带打开字符编码,如定义了一个字符编码的全局变量ENCODING="utf-8"
f=open("1.txt","r",encoding=ENCODING)

新建2.txt文件,将字符串内容添加到2.txt
f=open("2.txt","w",encoding=ENCODING)
f.write("hello world\n大家都OK\n中文不友好")
f.close()                                                          #文件操作完成后,需要关闭

f = open("3.txt","a")
f.write("test")

1.2.常用操作方法

1.2.1.read()

read() 方法用于从文件读取指定的字节数,如果未给定或为负则读取所有

语法
fileObject.read()
参数
size -- 从文件中读取的字节数。
返回值
返回从字符串中读取的字节
示例
1.txt
第一行数据:大家好
第二行数据:学习python
学习大好

绿色

ENCODING="utf-8"
f=open("1.txt","r",encoding=ENCODING)
line=f.read(6)
print(line)
# 关闭文件
f.close()
结果
第一行数据:

1.2.2.write()

write() 方法用于向文件中写入指定字符串。
在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。
语法
fileObject.write( [ str ])
参数
str -- 要写入文件的字符串
返回值
该方法没有返回值。
示例
f=open("1.txt","w")
str="this is a test"
f.write(str)
f.close()
结果
1.txt
this is a test

1.2.3.readline()

readline() 方法用于从文件读取整行,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符。
语法
fileObject.readline()
参数
size -- 从文件中读取的字节数。
返回值
返回从字符串中读取的字节。
示例
1.txt
this is a test
let try it again
welcome to the new world

f=open("1.txt","r")
print(f.readline())
print(f.readline())
print(f.readline())
f.close()
结果
this is a test
let try it again
welcome to the new world

1.2.4.readlines()

readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。 如果碰到结束符 EOF 则返回空字符串。
如果碰到结束符 EOF 则返回空字符串。
语法
fileObject.readlines( )
参数

返回值
返回列表,包含所有的行
示例
1.txt
this is a test
let try it again
welcome to the new world

f=open("1.txt","r")
print(f.readlines())
f.close()

结果
['this is a test\n', 'let try it again\n', 'welcome to the new world']

1.2.5.name()

打印文件名
f=open("1.txt","r")
print("文件名为:{0}".format(f.name))
f.close()
结果
文件名为:1.txt

1.2.6.fileno()

fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。暂时不用理解

1.2.7.close()

lose() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。
当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。
示例
f=open("1.txt","r")
print("文件名为:{0}".format(f.name))
f.close()

1.2.8.seek()

seek() 方法用于移动文件读取指针到指定位置。
语法
fileObject.seek(offset[, whence])
参数
offset -- 开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
示例
1.txt
this is a test
let try it again
welcome to the new world
apple
good
begin

f=open("1.txt","r")
print(f.readline())
print(f.readline())
f.seek(0,0)
print(f.readline())
f.close()
结果
this is a test
let try it again
this is a test

1.2.9.tell()

tell() 方法返回文件的当前位置,即文件指针当前位置

示例
f = open("1.txt","r")
f.readline()
f.readline()
print("光标当前位置: {0}".format(f.tell()))
f.close()
结果
光标当前位置: 34

1.2.10.truncate()

truncate() 方法用于从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小
示例
1.txt
this is a test
let try it again
welcome to the new world
apple
good

begin

f = open("1.txt","r+")
f.truncate(13)
print("截取后读取数据:{0}".format(f.read()))
f.close()

结果
1.txt
this is a tes

1.3.with用法

在open打开文件时,使用with可以忽略f.close()

f = open("1.txt","r")
f.readline()
f.close()

相当于

with open("1.txt","r") as f:
    f.readline()


三、函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
语法
def 函数名(参数列表):
    函数体
示例
#求0!+1!+2!+...+!n和
def jc(n):
    result=1
    if n==0:
        return result
    else:
        for i in range(1,n+1):
            result*=i
        return result

def main():
    n=input("please input a number: ")
    count=0
    for i in range(0,int(n)+1):
        count+=jc(i)
    print("{0}阶乘为{1}".format(n,count))
if __name__=='__main__':

    main()

说明:__name__属性 一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。


匿名函数
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法
lambda [arg1 [,arg2,.....argn]]:expression
示例
#求两个数的和
sums=lambda x,y:x+y
print("和为:{0}".format(sums(20,30)))


猜你喜欢

转载自blog.csdn.net/biankm_gz/article/details/79934664
今日推荐