欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python(十)文件操作

程序员文章站 2022-04-05 13:39:01
...

  '''

  函数:

  函数参数:必备参数、默认参数、不定长参数(元组不定长 字典不定长)

  函数的定义不会被执行

  函数的调用才会被执行

  '''

  # n1="name",10,20,{"name":"bd","id":2},{"age":18}

  # zd={"name":"bd","id":2}

  # def fun(x,y=10,*args,**kwargs):

  # print(x,end=" ")

  # print(y,end=" ")

  # print(args,end=" ")

  # print(kwargs,end=" ")

  # # fun(n1) # name 10 (20, {'name': 'bd', 'id': 2}, {'age': 18}) {}

  # # fun("name",10,20,{"name":"bd","id":2},age=18) # name 10 (20, {'name': 'bd', 'id': 2}, {'age': 18}) {} name 10 (20, {'name': 'bd', 'id': 2}) {'age': 18}

  # # fun("name",10,20,zd,age=18) # name 10 (20, {'name': 'bd', 'id': 2}) {'age': 18}

  #

  # # 想将字典里的可以通过字典拆包的形式,这里是指**zd,进行参数传递

  # fun("name",10,20,**zd,age=18) # name 10 (20,) {'name': 'bd', 'id': 2, 'age': 18}

  '''

  闭包,外层函数,返回内层函数的函数体

  函数里面没有return,函数就没有返回值,变量接收返回None

  '''

  # def funa():

  # def fune():

  # print(123)

  # return fune

  # a=funa()

  # print(a) # e at 0x000002DD4C9F09D8>

  # a() # 123

  '''

  global:

  不可变数据需要声明,如字符串、数值、元组等;

  可变数据不需要声明,如列表、字典、集合。

  nonlocal:

  函数嵌套函数时,要使用外层函数变量时,需要声明

  '''

  # a=12

  # def fun():

  # global a

  # a +=1

  # b=a

  # def fune():

  # global a

  # a +=1

  # nonlocal b

  # print(a,b)

  # return fune

  # c=fun()

  # c() # 14 13

  '''函数递归'''

  # def fun(x):

  # if x==1:

  # return 1

  # else:

  # return x*fun(x-1)

  # a=fun(3)

  # print(a) # 6

  '''匿名函数:lambda'''

  # def f(x):

  # return x

  #

  # # or

  # f=lambda x:x

  #

  # print(f(2)) # 2

  # print(list(map(lambda x:x*10,(1,2,3)))) # [10, 20, 30]

  '''

  变量存储数据,永久保存 文件,

  open() 有返回值 返回文件本身

  里面有三个参数:

  文件路径:

  绝对路径:(从磁盘出发)

  【如】r'F:\03、Python技能提升'

  最好加上r,防止字符串转义

  相对路径:(从程序自身出发)

  上一级路径 ../

  同层级 ./或者不写

  下一级路径 /

  【注】程序和打开的文件在同一个最小文件夹里属于同层级,程序在的(即文件夹中箭头往左、往上)为上一级

  【如】r'../基础语法/10、阶段小结(2)'

  默认方式:

  r:只读模式

  w:先清空后写入,文件不存在则创建文件

  a:追加模式,文件不存在则创建文件

  +:更新模式,结合rwa模式

  b:二进制打开模式

  字符文件:txt,右键通过记事本打开能看懂的

  字节文件:png、音频,二进制文件

  编码格式

  read() 从哪里读取内容 如下f.read()

  tell() 查看光标

  seek() 调整光标

  '''

  # # 只读模式r

  # f=open('汉字.txt','r',encoding='UTF8') # 文件保存格式为UTF8,所以需要encoding='UTF8'声明编码格式为UTF8,使编码格式一致

  # print(f) # <_io.textiowrapper name="汉字.txt" mode="r" encoding="UTF8">

  # print(f.read()) # 沉迷代码,渐感兴奋

  # # 写入模式w

  # d=open('写入与追加操作.txt','w',encoding='UTF8') # 先清空后写入,文件不存在则创建文件

  # # 将内容写入文件,若有内容,则先清空后写入

  # d.write('NIHAO')

  # # 保存文件

  # d.flush()

  # 追加模式a

  # d=open('./写入与追加操作.txt','a',encoding='UTF8')

  # d.write(',Hello')

  # d.flush()

  # # 更新模式+

  # e=open('更新模式.txt','w+',encoding='UTF8')

  # e.write('NIHAO')

  # e.flush()

  # print(e.tell()) # 5

  # e.seek(0) # 调整光标

  # print(e.read()) # NIHAO

  # e=open('更新模式.txt','bw+')

  # # e.write('NIHAO') # 报错TypeError: a bytes-like object is required, not 'str'

  # e.write(b'NIHAO') # b'NIHAO',b表示二进制

  # e.flush() # 保存文件

  # print(e.tell()) # 5

  # e.seek(0) # 调整光标

  # print(e.read()) # b'NIHAO'

  '''

  文件的写入:

  write() 单行写入

  writelines() 多行写入

  文件的读取:

  read() 读取全部,以字符串的形式返回

  readline() 读取单条

  readlines() 读取多条,以列表的形式返回,一行是一个元素

  '''

  # f=open('test.txt','a+',encoding='UTF8')

  # f.writelines(['NIHAO

  ','This Is Python ','cool'])

  # # 关闭,保存

  # f.seek(0)

  # print(f.readlines())

  # f.close()

  '''

  with:上下文函数

  执行完函数里面的代码,会自动关闭文件

  f.closed:检测文件是否关闭

  '''

  # with open('test.txt','a+',encoding='utf8') as f: # 即f=open()

  # f.seek(0)

  # print(f.read())

  # print(f.closed) # 可以检测文件是否关闭,若关闭则返回True

  '''

  IO文件流:创建在内存中的临时假文件 字符串 无编码格式限制

  '''

  # import io # 用来创建临时假文件

  # string=io.StringIO() # 创建临时假文件

  # string.write('123132')

  # string.seek(0)

  # print(string.read())

  '''

  IO:字节流:创建在内存中的临时假文件,字节数据

  '''

  # import io # 用来创建临时假文件

  # bys=io.BytesIO() # 用来创建临时的二进制假文件

  # bys.write(b'123132')

  # bys.seek(0)

  #

  # print(bys.read())

  # # or

  # print(bys.getvalue()) # 读取二进制文件的方法getvalue()

  '''

  os 模块:

  mkdir(目录名) 创建文件夹

  rmdir(目录名) 删除文件夹

  makedirs(目录\目录\目录) 创建多层文件夹

  removedirs(目录\目录\目录) 删除多层文件夹

  rename(文件名,新文件名) 更改文件名

  system() 调用系统命令

  listdir() 查看目录下面存在的文件,以列表形式返回

  getcwd() 返回当前文件路径

  remove() 删除文件

  path.join() 拼接路径

  【注】文件路径与上方的文件操作路径标准一致

  '''

  # import os

  # os.mkdir("bd") #创建文件夹bd

  # os.rmdir("bd") #删除文件夹bd

  # os.makedirs(r'bd\chenhong') # 创建多层文件夹bd\chenhong

  # os.removedirs(r'bd\chenhong') # 删除多层文件夹bd\chenhong

  # os.mkdir(r'bd')

  # osame(r'bd',r'ch') # 更改文件夹名

  # print(os.listdir(path='./')) # 默认有path='./'

  # print(os.getcwd()) # 打印文件路径

  # os.remove('cc.txt') # 删除文件

  # print(os.path.join('123','456')) # 拼接路径,123\456

  '''

  模块和包:

  一个模块就是一个py文件

  import 模块

  包就是放了很多QQ靓号出售平台模块(py文件)的文件夹

  from 包 import 模块

  库:

  同类型的py文件

  '''

  '''datetime模块'''

  # import datetime

  # print(datetime.datetime.now()) # 第一个datetime是包,第二个是模块,打印本地时间

  #

  # from datetime import datetime

  # print(datetime.now())

  if __name__=="__main__": # 自己本身运行,执行

  print("我没有被当做模块调用")

  else: # 被当做模块调用,执行

  print("怎么还没有走,我好着急")

  文章到这里就结束了!希望大家能多多支持Python(系列)!六个月带大家学会Python,私聊我,可以问关于本文章的问题!以后每天都会发布新的文章,喜欢的点点关注!一个陪伴你学习Python的新青年!不管多忙都会更新下去!一起加油!

  Editor:Lonelyroots,网上资源千千万,不过一个答疑的人却也是很重要的,私信我,即可获取永久答疑权限!