模块运用,文件搜索

‘‘‘
面向过程编程
核心过程二字,过程指的是解决问题的步骤,即先干什么、再干什么、然后干什么...
基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式

优点
复杂的问题流程化、进而简单化
缺点
扩展性极差

‘‘‘

# 接收用户输入用户名,进行用户名合法性校验,拿到合法的用户名
def check_user():
while True:
name = input(‘username>>‘).strip()
if name.isalpha():
return name
else:
print(‘用户名必须为字母,傻叉‘)

# 接收用户输入密码,进行密码合法性校验,拿到合法的密码
def check_pwd():
while True:
pwd1=input(‘password>>: ‘).strip()
if len(pwd1) < 5:
print(‘密码的长度至少5位‘)
continue
pwd2=input(‘again>>: ‘).strip()
if pwd1 == pwd2:
return pwd1
else:
print(‘两次输入的密码不一致‘)

def check_age():
pass

# pwd=check_pwd()
# print(pwd)
# 将合法的用户名与密码写入文件
def insert(user,pwd,age,path=‘db.txt‘):
with open(path,mode=‘a‘,encoding=‘utf-8‘) as f:
f.write(‘%s:%s:%s\n‘ %(user,pwd,age))

def register():
user=check_user()
pwd=check_pwd()
age=check_age()
insert(user,pwd,age)
print(‘register successfull‘)

register()

# 用户功能层
def register():
while True: # 检测用户名
name=input(‘username>>: ‘).strip()
#检测用户是否重复,如果重复了则重新输入,否则break
res=check_user_interface(name)
if res:
print(‘用户存在‘)
else:
break

while True: # 检测密码
pwd1 = input(‘pwd1>>: ‘).strip()
pwd2 = input(‘pwd2>>: ‘).strip()
if pwd1 != pwd2:
print(‘两次输入密码不一致,重新输入‘)
else:
break

def tell_info():
name=input(‘>>: ‘).strip()
info=select(name)
print(info)

# 接口层
def check_user_interface(name):
res = select(name) # res=[‘egon‘,‘123‘]
if res:
return True
else:
return False

# 数据处理层
def select(name):
with open(‘db.txt‘, ‘r‘, encoding=‘utf-8‘) as f:
for line in f:
info = line.strip(‘\n‘).split(‘:‘) #info=[‘egon‘,‘123‘]
if name == info[0]:
return info

1、什么是模块
模块是一系列功能的集合体
import spam 在import 后面跟上自己自定义文件名 运用的时候是spam.x span.是前缀,.x后面的是属性,指挥在他自己的模块里找
如果import 后面跟的文件名过长,也可以通过as 起别名
常见的模块形式(自定义模块,第三方模块,内置模块):(内置模块是C语言内置功能,因为python解释器是C语言编写的)
1、一个py文件就是一个模块,文件名是module.py,而模块名是module.
2、一个包含有__init__.py文件的文件夹也是模块
3、已被编译为共享库或DLL的C或C++扩展
4、使用C编写并链接到python解释器的内置模块
2、为什么要用模块
1、用第三方或者内置的模块是一种拿来主义,可以极大地提升开发效率
2、自定义模块将我们自己程序中需要用到的公共的功能写入一个python文件
然后程序的各部分组件,可以通过导入的方式来引用、重用自定义模块中的功能
3、如何用模块
导入的方式有两种
import 模块名
from 模块名 inport 具体的功能

# 当前的执行文件
# x=1
# y=2
# 首次导入模块发生了3件事:
#1、导入模块时以模块为准创造一个模块的名称空间
#2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
#3、在当前执行文件中拿到一个模块名
# import spam

# 之后的重复导入会直接引用之前创造好的结果,不会重复执行模块的文件
# import spam #spam=spam=模块名称空间的内存地址

# spam.名字
# print(x)
# spam.x
# print(spam.money)
# print(spam.read1)
# print(spam.read2)
# print(spam.change)
# money=11111111111111
# spam.read1()
# def read1():
# print(‘执行文件的read1‘)
# spam.read2()

# spam.change()
# print(spam.money)
# print(money)

# import spam as sm
# print(sm.money)

# import time,spam,os,sys
# import spam
# import os
# import sys

# import spam
# spam.money

# from ... import ...首次导入也发生了三件事:
#1、以模块为准创造一个模块的名称空间
#2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
#3、在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用

文件搜索模块:导入模块时查找模块的顺序是:内存---内置-----环境变量
如果文件在当前文件外,可以通过两种方式查找到:
1、是调用sys内置模块,然后通过sys.path.append(r"地址")
2、from 目录文件 import 模块名
如果文件在当前文件的子文件内,可以通过
from 子文件名 import 模块名

# x=1
# y=2
#
# from spam import money,read1
# money=10
# print(money)
# print(read1)

# from .... import ... 对比 import 。。。
# 优点:不用加前缀,代码更为精简
# 缺点:容易与当前执行文件中名称空间中的名字冲突

# 相同点:
# 1、都会执行模块对应的文件,都会产生模块的名称空间
# 2、调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关
# 不同点
# 1、一种需要加前缀,一种不需要加前缀

# from spam import money,read1,read2,change
# money=111111111111111111
# read1()
# def read1():
# print(‘当前执行文件的read1‘,money)

# read1()

# def read1():
# print(‘当前执行文件的read1‘,money)

# read2()

# change=1
# change()
# print(money)

# from spam import money
# from spam import read1
# from spam import read2
# from spam import change

from spam import *
print(money)
print(read1)

print(change)
# print(read2)

原文地址:https://www.cnblogs.com/yf18767106368/p/9189055.html

时间: 2024-08-01 09:58:02

模块运用,文件搜索的相关文章

DLL中__declspec(dllexport)和.def(模块定义文件)定义导出函数的一点区别

原想是不在DLL中使用.def文件的,直接在需要导出的函数前加__declspec(dllexport)修饰.但在是要导出STDAPI __declspec(dllexport) DllGetClassObject的时候,就提示"warning C4518: “__declspec(dllexport ) ” : 此处遇到意外的存储类或类型说明符:被忽略"(我用的是vc.net 2003). STDAPI这个宏扩展出来是extern "C" HRESULT __st

python-linecache模块读取文件用法

python-linecache模块读取文件用法详解 linecache模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行. 1.linecache.getlines(filename) 从名为filename的文件中得到全部内容,输出为列表格式,以文件每行为列表中的一个元素,并以linenum-1为元素在列表中的位置存储 2.linecache.getline(filename,lineno) 从名为filename的文件中得到第lineno行.这个函数从不

Python学习笔记-模块介绍(三)-模块包和搜索路径

一个python文件就是一个模块,使用独立的命名空间,但实际使用过程中单单用模块来定义python功能显然还不够.因为一个大型的系统几千上万个模块是很正常的事情,如果都聚集在一起显然不好管理并且有命名冲突的可能,因此python中也出现了一个包的概念. 一.python中的包介绍 包是通过使用"点模块名称"创建Python模块命名空间的一种方法.列如,模块名称 A.B 表示一个在名为 A的包下的名为B的子模块.就像使用模块让不同模块的作者无需担心彼此全局变量名称(冲突)一样,点模块名称

小蚂蚁学习Linux(4)——链接命令ln、文件搜索命令locate、whereis和which

链接命令ln    (取自link之意) ln  [源文件]    [目标文件]    功能:生成链接文件.    -s 创建软连接 ,不加是创建硬链接 硬链接的特征: 1. 拥有相同的i节点和存储block快,可以看做是同一个文件. 2. 可通过i节点识别 3. 不能跨分区 4. 不能针对目录使用 备注:硬链接只要不把所有文件名删除,删除其中一个不影响其他文件名的使用. 需要注意的是,不建议只用硬链接: 1. 硬链接太过隐蔽,只能通过查看inode节点id号识别 2. 自身的限制也比较多. 替

“允许源文件与模块生成文件不同” 解决方法 ,亲测最有效的

今天写代码的时候有一处访问数据库的操作,sql语句报了错,因为少加了一个[,] 调试的时候中断在这个地方,然后发现了问题,就顺手加了上去,再运行的时候发现运行的版本还是那个少了[,]的版本 然后就有了此文 网上查找解决方案大致有三种,我尝试了两种,最后使用了自己的办法解决 网上的解决方案链接在此[http://blog.csdn.net/woaizhoulichao1/article/details/6313173] 最后删除了源文件中bin目录下的文件,整个项目就出了问题,就想到是不是生成不正

文件搜索者--find命令详解

1. 文件查找: 在linux系统中由于文件的众多,往往需要在众多的文件当中查找某一个文件,如果时间一长,很难记得文件存放至何处,不过,这一点,你不比担心,因为开发人员为我们提供了强大的文件搜索工具,下面将介绍两款常用的文件查找工具locate,和find,这两款查找工具只能是从文件系统中查找不能在内存当中查找,因为内存是没有文件系统的. 2. locate命令: locate命令是基于数据库来查找文件的,命令查找速度快,一般查找跟新慢的,名字变化少的,如:配置文件,可以用locate查找,因为

python下通过os模块和shutil模块进行文件处理方式

python下通过os模块和shutil模块进行文件处理方式 得到当前工作目录路径:os.getcwd() 获取指定目录下的所有文件和目录名:os.listdir(dir) 删除文件:os.remove(file) 删除多个目录:os.removedirs(r"/home") 检测路径是否为文件:os.path.isfile(path) 检测路径是否为目录:os.path.isdir(path) 判断是否为绝对路径:os.path.isabs(path) 检测路径是否存在:os.pat

LInux 文件搜索命令

文件搜索命令  locate 优点:搜索速度很快 缺点: 只能搜索文件名(速度快 耗费资源少) localte  文件名 (在后台数据库中按文件名 搜索,搜索速度快  localte 命令并不是在系统中去搜索 ) 而是会在 /var/lib/mlocate  后台数据库  (#locate 命令所搜索的后台数据库 该数据库是一天一更新) updatedb  可以立刻更新数据库 locate 搜索时: 按照配置文件来进行搜索  /etc/updatedb.conf 配置文件 # 开启搜索限制 pr

Atitit.文件搜索工具&#160;attilax&#160;总结

Atitit.文件搜索工具 attilax 总结 1. 指定目录按照体积大小精确搜索1 1.1. File Seeker 4.5 版本的可以,3.5版本的不行..1 2. 按照文件内容搜索1 2.1. File Seeker2 2.2. Notepad++2 2.3. FileLocator Pro 是一款专业的文件搜索软件,2 2.4. 百度硬盘搜索3 3. 在的3 1. 指定目录按照体积大小精确搜索 1.1. File Seeker 4.5 版本的可以,3.5版本的不行.. 2. 按照文件内