码迷,mamicode.com
首页 > 编程语言 > 详细

python知识心得10

时间:2021-06-10 17:54:45      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:文件夹   内存   提升   内存地址   可扩展性   共享   ++   一个   python   

今日内容:

1、控制文件指针移动

# f.seek移动的全都是字节个数
# f.seek(字节个数,0)  # 文件最开始的地方
# f.seek(字节个数,1)  # 指针移动到的地方
# f.seek(字节个数,2)  # 文件末尾

# ps:只有0模式可以t下使用,其中1和2模式只能在b模式下使用,但是无论在t模式还是b模式下,移动的都是字节个数

# 例如:a.txt 内容:hello你好kasjdkla

with open(r"a.txt",mode="rt",encoding="utf-8") as f:
    print(f.tell()) # 0  查看当前文件指针距离文件开头的位置,输出结果为0
    f.seek(9,0)  # 9 查看当前文件指针距离文件开头的位置,输出结果为9
    f.seek(3,0)  # 3 查看当前文件指针距离文件开头的位置,输出结果为3
    print(f.tell())  # 3 查看当前文件指针距离文件开头的位置,最终输出结果为3


with open(‘a.txt‘,mode=‘rb‘) as f:
    print(f.tell())  #0  从指针当前位置往后移动0个字节,而此时的当前位置就是文件开头
    f.seek(9,1)  # 9 从当前位置往后移动9个字节,而此时的当前位置就是文件开头
    f.seek(3,1)  # 12 从当前位置往后移动3个字节,而此时的当前位置9
    print(f.tell())  # 12 从当前位置往后移动3个字节,而此时的当前位置9

with open(‘a.txt‘,mode=‘rb‘) as f:
    print(f.tell())  #0 从指针当前位置往后移动0个字节,而此时的当前位置就是文件开头
    f.seek(0,2)  # 参照文件末尾移动19个字节, 即直接跳到文件末尾
    print(f.tell())  # 19 输出结果为:19

with open(‘a.txt‘,mode=‘ab‘) as f:
    print(f.tell())  # 19 追加模式指针移动到最后,显示全部字节


# Linux命令:tail -f access.log

2、文件修改的两种方式

# 例如:a.txt 内容:hello你好kasjdkla

# with open(‘a.txt‘, mode=‘r+t‘, encoding=‘utf-8‘) as f:
#    f.seek(9,0)
#    f.write("hello")  #hello你?hellojdkla 

# PS:文件修改不是修改,而是执行覆盖命令


# 文件修改的原理:
# 把硬盘数据读入内存,在内存修改完毕后,再覆盖回硬盘

# 具体来说又分为两种方案
# 方案一:  利:不占硬盘空间 弊:占据内存空间
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 为何要用函数
    不用函数写出的代码问题是:
        1 程序的组织结构不清晰,可读性差,可维护性差
        2 可扩展性差


3 如何用函数
    原则:
        先定义
        后调用

    定义函数的语法:
    def 函数名(参数1,参数2,参数3,...):
        代码1
        代码2
        代码3
        return 值

    调用函数语法:
    res = 函数名(值1,值2,值3)

"""
# ①定义函数 & 调用函数

# 1 定义函数与调用函数
# x = 10
# y = x
# print(x)

# def func():  # func = 函数的内存地址
#     print("*" * 40)
#     print("hello".center(40, ‘ ‘))
#     print(‘=‘ * 40)
#
# print(func)
# f = func
# f()
# func()

# 2 函数定义阶段发生的事情:
#  申请内存空间,把函数体代码放进去,然后把内存地址绑定给函数名
# def func():
#     print(1)
#     print(2
#     print(3)

# 3 函数调用阶段发生的事情: 执行函数体代码
# def func():
#     print(1)
#     print(2)
#     asdf
#     print(3)
#
# func()

# ps: 函数定义阶段只检测语法不执行代码,只有在调用函数时才会执行函数体代码


# ②函数的参数:形参与实参
# 函数的参数分为形式参数和实际参数,简称形参和实参:
# 形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。
# 实参即在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的组合:

# # 例1:
# def bar():
#     print(‘from bar‘)
#
# def foo():
#     print(‘from foo‘)
#     bar()
#
# foo()  # from foo\n  from bar


# 例2:
# def foo():
#     print(‘from foo‘)
#     bar()
#
# def bar():
#     print(‘from bar‘)
#
# foo()  # from foo\n from bar


# def add(x,y):
#     res = x + y
#     print(res)
# add(1,2)


# def func(x, y):
#     if x > y:
#         print(x)
#     else:
#         print(y)
# func(11231231231, 22123123123213)

# def login(inp_user,inp_pwd):
#     if inp_user == ‘egon‘ and inp_pwd == "123":
#         print(‘ok‘)
#     else:
#         print(‘error‘)
# login(‘egon‘,"123")


# l = [111, 222, 333, 444, 555]
#
# size = len(l)
# if size > 3:
#     print(‘ok‘)
# else:
#     print(‘no‘)

# def max2(sal1, sal2):
#     if sal1 > sal2:
#         return sal1
#     else:
#         return sal2
#
# res = max2(1000,2000)
# print(res * 12)

# l = [111, 22, 333]
# res = l.append(4444)
# res = l.pop()
# print(res)


# ③ 函数的返回值
# return返回值的语法: return也可以作为中断循环工具的语法。
# 函数内可以有多个return,但只要执行一次,整个函数就立即结束,并且将return后的值当作本次调用的产品返回

# def func():
#     print(‘aaaa‘)
#     return 11111111111111
#     print(‘bbbb‘)
#     return 2222222222
#     print(‘cccc‘)
#     return 333333333
#
# res = func()
# print(res)

# 具体来说函数的返回值有三种形式
# 1 return 值: 返回的就是改值本身/-
# 2 return 值1,值2,值3:返回的是小元组
# def func():
#     return 1111,"aaa",[11,222]
#
# x,y,z = func()
# print(x,y,z)

# # 3 没有return或者return无值或者return None:返回的都是None
# def func():
#     res = 1 + 2
#     return
#
# res = func()
# print(res)

4、模块

"""
1 什么是模块
  模块一系列功能的集合体

  模块分为四种通用的类别
    1 使用python编写的.py文件
    2 已被编译为共享库或DLL的C或C++扩展  # 不用
    3 把一系列模块组织到一起的文件夹
    (注:文件夹下有一个__init__.py文件,该文件夹称之为包)
    4 使用C编写并链接到python解释器的内置模块  #不用

  模块有三种来源:
    1 python自带的模块/库
            内置模块
            标准库

    2 第三方的库

    3 自定义库

2 为何要用模块
    1 拿来主义,提升开发效率
    2 减少代码冗余

3 如何用模块
    import
    from ... import
"""

# import spam

# print(spam.x)
# print(spam.f1)
# print(spam.f2)

# def f1():
#     print(‘xxxxxxxx‘)

# spam.f1()
# spam.f2()


# from spam import x,f1,f2

# def f1():
#     print(‘xxxxx‘)

# f1()

5、常用模块

# 一 time模块
import time

# 时间戳
# print(time.time())

# 格式化的字符
# print(time.strftime(‘%Y-%m-%d %H:%M:%S‘))

# 结构化的时间
# obj = time.localtime()
# print(obj.tm_year)
# print(obj.tm_yday)
# print(obj)

# obj2 = time.gmtime()  # utc
# print(obj2)

# 二 random模块
import random

# print(random.random())
# print(random.randint(1,3))
# print(random.randrange(1,3))
# print(random.choice([11,"aaa",333]))
# print(random.sample([11,"aaa",333,444],2))

# print(random.uniform(1, 3))

# item=[1,3,5,7,9]
# random.shuffle(item)
# print(item)


# 储备知识
# print(chr(65))
# print(chr(90))
#
# print(ord(‘A‘))
# print(ord(‘Z‘))

# 随机验证码游戏:
import random

def make_code(size):
    res = ‘‘
    for i in range(size):
        num = str(random.randint(0,9))
        s = chr(random.randint(65,90))
        res += random.choice([num,s])
    return res


print(make_code(6))

python知识心得10

标签:文件夹   内存   提升   内存地址   可扩展性   共享   ++   一个   python   

原文地址:https://www.cnblogs.com/ws7788/p/14868878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!