day10 文件修改 函数基础 模块

今日内容

文件修改的两种方式
函数的参数
模块
自定义函数

tail程序

import time

with open('access.log',mode='at',encoding='utf-8') as f:
    f.write('%s 张三 200.103.110.22 ok\n'% time.strftime('%Y-%m-%d %H:%M:%S'))

文件修改的两种方式

# import time
# with open('a.txt',mode='at',encoding='utf-8') as f:
#     f.write('%s 张三 200.103.110.22 ok\n'% time.strftime('%Y-%m-%d %H:%M:%S'))

#方案一:
# with open('b.txt',mode='rt',encoding='utf-8') as f:
#      data = f.read()
# with open('b.txt',mode='wt',encoding='utf-8') as f:
#     f.write(data.replace('TXT','TXT.'))


#方案2
# import os
# with open('b.txt',mode='rt',encoding='utf-8') as f1,\
#      open('.b.txt.swp',mode='wt',encoding='utf-8') as f2:
#      for line in f1:
#          f2.write(line.replace('TXT','TXT.'))
#
# os.remove('b.txt')
# os.rename('.b.txt.swp','b.txt')

函数

1 什么是函数
    函数就是盛放功能(一系列代码)的容器
    定义函数就是造出了一个工具

    事先准备工具的过程->函数的定义
    遇到应用场景拿来就用->函数的调用
2 为何要用函数
    不用函数写出的代码问题是:
        1 程序的组织结构不清晰,可读性差,可维护性差
        2 可扩展性差


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

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

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

 

函数的参数

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后的值当作本次调用的产品返回

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)

模块

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()


常用模块
# 一 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))

# 三 os模块
print(os.cwd)

os.environ 环境变量 整个系统中都可以用

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: ('.')
os.pardir  获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")  运行shell命令,直接显示
os.environ  获取系统环境变量
os.path.abspath(path)  返回path规范化的绝对路径
os.path.split(path)  将path分割成目录和文件名二元组返回
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小2


# 四 subprocess
#tasklist | findstr python.exe 
#taskkill /F /PID 30060-------------------杀程序
#os.system('tasklist | findstr chorome')
#res = os.system('tasklist')
#print('='*58)
#print(res)

import subprocess

subprocess.Popen('tasklist',shell=True)



自定义函数

1.必须 先定义 后调用
2.func 指向函数的内存地址
形式一:
def func(); 
    print('hhh')
func()

#定义函数发生的事情   # def  func()
#1.申请内存空间保存函数体代码
#2.将上述内存地址绑定函数名
#3.定义函数不会执行函数体代码,但是会检测函数体语法

#调用函数发生的事情   func()
#1.通过函数名找到函数的内存地址
#2.然后加括号就是在触发函数体代码的执行
posted @ 2021-07-20 20:16  SSSagittarius  阅读(49)  评论(0编辑  收藏  举报