6_9

1.文件的指针移动

1.f.seek(字节数,模式)
模式:0,1,2
注:0模式较为特殊,只能在t模式下使用
   
   例:
   # f.seek(字节个数,0)
   # f.seek(字节个数,1)
   # f.seek(字节个数,2)
   

 

2.文件修改的2种方法

核心:字符串replace()
   
1.在内存中直接修改,费内存

2.建立2个文件,用文件2覆盖1,对硬盘要求较高
方案2涉及文件操作:os.remove,os.rename


1.
# with open('test.txt',mode='rt',encoding='utf-8') as f:
#     data = f.read()
# with open('test.txt',mode='wt',encoding='utf-8') as f:
#     f.write(data.replace('egon','EGON'))

2.
# import os
# with open('test.txt',mode='rt',encoding='utf-8') as f1,open('.test.txt.swp',mode='wt',encoding='utf-8') as f2:
#     for line in f1:
#         f2.write(line.replace('EGON',"egon"))
# os.remove('test.txt')
# os.rename('.test.txt.swp','test.txt')

 

3.函数

1.函数的原则:先定义后调用(定义的时候只检查语法错误,不执行代码)

2.函数的定义:
def 函数名(参数1,参数2,参数3,...):
       代码1
       代码2
       ······
       return
   
3.函数的调用:
函数名()
   
4.函数的返回值:
函数内可以有多个return,但只要执行一次,整个函数就立即结束。根据这个特性,可以用return来结束函数。
 
   返回值的3中形式:
  return
  return 值1,值2,值3:返回的是小元组
       return None:没有return或return无值,返回的都是None

 

4.模块

1.模块的分类:(根据来源)
1.1 python自带的模块/
           内置模块
           标准库
    1.2 第三方的库
    1.3 自定义
       
2.模块的调用:
import 模块名              #相当于调用模块
   from 模块名 import f1,f2   #相当于调用模块内部函数

 

5.常用模块

    1.1时间戳
# print(time.time()) #当前时间到计算机元年的秒数,用于以时间差计时
   1.2格式化的字符
# print(time.strftime('%Y-%m-%d %H:%M:%S'))
   1.3结构化的时间
# obj = time.localtime()
  # obj2 = time.gmtime()     # 标准国际时间
   # print(obj.tm_year)
   # print(obj.tm_yday)
   # print(obj)
   
2.random模块  #用于产生随机数
# print(random.random())   #随机小数
   # print(random.randint(1,3)) #随机整数,顾头顾尾
   # print(random.randrange(1,3))#随机整数,顾头不顾尾
   # print(random.choice([11,"aaa",333]))#随机选择
   # print(random.choices([11,"aaa",333],[1,2,1],k=2))#第一个列表表示随机选择的对象,第2个列表是对对象加上权重,k=2表示选择的次数,2次可以选择同一对象
   # print(random.sample([11,"aaa",333,444],2))#随机选择2个,选择之后还是列表,2表示一次性选出2个,不能是同一对象

   可以用来产生随机验证🐎
  不能这么写,为什么?
       import random
       res = random.choices([chr(random.randint(48, 57)), chr(random.randint(97, 122)), chr(random.randint(65, 90))], [4, 2, 2], k =4)
       print("".join(res))
       程序会先执行并固定列表中的内容,导致输出相当于实在3个字符里选4次,必有一个相同
       
       正确写法:
       import random
num = ""
for i in range(4):
  res = random.choices([chr(random.randint(48, 57)), chr(random.randint(97, 122)),chr(random.randint(65, 90))], [1, 1, 1], k =1)
  num += "".join(res)
print(num)

 

补充:

      1.ord("A")用于看ASCLL码
   
      2.
      import string
      s = string.ascii_letters
      print(s)
      #结果abcdefghijklmnopqrstuvwxyzA BCDEFGHIJKLMNOPQRSTUVWXYZ        
       
      3.*****
      列表和字典的复制和变量不同
       直接相等=             #变量可以,列表则只是复制地址,指向同一片内存空间,修改一个,另一个也会变
       copy.copy()          #列表的复制,列表的值是独立的,但如果是2级列表,一级列表的值指向的地址(二级列表的值的地址)仍然是相同的
       copy.deepcopy()      #彻底复制,完全不相干

 

posted @ 2021-06-10 10:03  hai437  阅读(410)  评论(0编辑  收藏  举报