层次的递进与返回

#输入quit的时候返回上一阶层,输入exit退出所有的循环

tag=True
while tag==True:
level1=input('level1:')
if level1=='quit':
break
if level1 =='exit':
tag=False
while tag==True:
level2=input('level2:')
if level2 == 'quit':
break
if level2 == 'exit':
tag =False
while tag==True:
level3=input('level3:')
if level3 == 'quit':
break
if level3 == 'exit':
tag =False

查询与修改文件的大程序

1.文件txt的内容

name 杀马特
    年龄18
    身高160
    体重80
name 土嗨
    年龄21
    身高180
    体重80
name aaaaa
    年龄120
    身高100
    体重160

2.主程序

模块:每一个py文件就是一个模块

如果选package里面会多一个__init__.py的空文件,如果没有init就是directory文件
用package的时候,如果需要使用另一个py文件里面的函数的时候

1.比如说在ab.py里面需要导入另一个cal.py里面的函数

需要在ab.py的顶头写上

import cal

2.如果要cal里面的add函数则写cal.add()

3.如果觉得每次cal.add()很麻烦,可以改写

成from cal import add

4.如果ab.py和my_mouudle文件夹同一级别,现在需要在ab.py中使用my_moudle里

的cal.py,那么应该写from my_moudle import cal,这样才能用cal.py里面的函数

5.程序模块化的标准写法:

程序的入口在bin.py,其他的py文件放置在同一级的moudle文件夹里面。
然后在bin.py里面吧moudle文件夹里面的所有py文件调用进来。

6.执行哪个py文件的时候,解释器会把目录光标指向那个py文件的上一级的文件夹,

此时那个上级文件夹里面的py文件 都可以互相import到。
由于bin文件和module文件为同一级别,所以module里面的py
文件的写法应该是from module import xxx

目录

class
    bin.py
    __init__.py
    mymodule
        main.py
        send.py
        __init__.py

bin.py里面的内容

from mymodule import main
main.add(1,3)
main.py里面的内容
from mymodule import send
def add(x,y):
send.addprint()
print(x+y)
return x+y
send.py里面的内容
def addprint():
res=print('the add result is ')
return res

1.如果module文件夹里面还有module文件夹

可以用.来连接来调用。

目录

class
    bin.py
    __init__.py
    mymodule
        main.py
        send.py
        __init__.py
        mymodule1
             mymodule2
                 seek.py
要import里面的seek.py
可以写from mymodule.mymodule1.mymodule2 import seek

 

__name__的作用:

找出引用__name的这段的程序来自于哪里,比如在bin内输入
print(__name__),此时打印__name__在本函数bin内执行,
所以结果是__main__.


但是如果在它的模块里的main.py里面的函数里输入print(__name__)
,并且在bin中调用那个函数,那么显示出来将会是main.py的路径
 
__name__运用方法:
if __name__ =='main':  写这句话之后再进行后续程序的书写
用这句话可以分开测试代码和运行代码

比如想在module里面的py文件书写测试代码,但是如果在module
里面写了测试代码,主函数bin运行的时候也会执行测试代码。
如果在测试代码的开头加上if __name__ =='main',这样执行主函数
bin的时候,测试代码将不会运行。
bin文件里面的开头加上if __name__ =='main'可以保证bin文件无法
被调用

__file__的运用方法:

os.path.abspath(__file__)是当前py文件的绝对路径。
实例:如何把当前bin文件.py的上一级的文件夹的绝对路径加入绝对路径

import os
print(os.path.dirname(os.path.abspath(__file__)))
path1=os.path.dirname(os.path.abspath(__file__))
sys.path.append(path1)

Py层次递进与文件修改大程序,模块,name与file的更多相关文章

  1. Python 文件修改-函数介绍

    上节课复习:1.字符编码 1.1 如何解决乱码问题: 字符存取使用的编码标准不一致 1.2 文件头 在文件的首行写入文件头,用于控制Python解释器读取py文件内容时使用的编码 #coding:文件 ...

  2. node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用提高nodejs调试效率

    在开发或调试Node.js应用程序的时候,当你修改js文件后,总是要按下CTRL+C终止程序,然后再重新启动,即使是修改一点小小的参数,也 总是要不断地重复这几个很烦人的操作.这是因为Node.js ...

  3. 如何在Ubuntu Unity上修改应用程序图标

    转自如何在Ubuntu Unity上修改应用程序图标 这篇文章将教大家在Ubuntu Unity上修改应用程序图标,这个教程适合于Ubuntu 14.04, Ubuntu 13.10, Ubuntu ...

  4. 凹凸曼的修改zencart 程序(经典!)

    ==================================================================================================== ...

  5. Git版本控制:Git查阅、撤销文件修改和撤销文件追踪

    http://blog.csdn.net/pipisorry/article/details/47867097 查看文件的修改历史 git log --pretty=oneline 文件名 # 显示修 ...

  6. Python:基于MD5的文件监听程序

    前述 写了一个基于MD5算法的文件监听程序,通过不同的文件能够生成不同的哈希函数,来实现实现判断文件夹中的文件的增加.修改.删除和过滤含有特定字符的文件名的文件. 需求说明 需要实现对一个文件夹下的文 ...

  7. 长连接锁服务优化实践 C10K问题 nodejs的内部构造 limits.conf文件修改 sysctl.conf文件修改

    小结: 1. 当文件句柄数目超过 10 之后,epoll 性能将优于 select 和 poll:当文件句柄数目达到 10K 的时候,epoll 已经超过 select 和 poll 两个数量级. 2 ...

  8. chattr 改变文件、目录属性 (chmod、passwd等涉及文件修改的命令提示Operation not permitted)

    与chmod这个命令相比,chmod只是改变文件的读写.执行权限,更底层的属性控制是由chattr来改变的. lsattr查看文件或目录属性 chattr命令的用法:chattr [ -RVf ] [ ...

  9. MongoDB日志文件过大

    MongoDB日志文件过大 MongoDB启动的时候指定了--logpath为一个日志文件.随着时间此文件会变得越来越大,达到好几个G. 因为不想让MongoDB进程重新启动,所以不能停止进程删除此文 ...

随机推荐

  1. 第四章 Sentinel--服务容错

    我们接着承接上篇继续讲下去 : 第三章 Nacos Discovery–服务治理,开始第四篇的学习 第四章 Sentinel–服务容错 4.1 高并发带来的问题 在微服务架构中,我们将业务拆分成一个个 ...

  2. Python之格式化unix时间戳

    就瞎倒腾,格式化时间: 1 import time 2 3 unixTime = time.time() #定义unixTime以存储系统当前的unix时间戳 4 print(unixTime); # ...

  3. 前后端分离项目获取后端跨控制器获取不到session

    最近做前后端分离项目(.net core web api  +vue)时,后台跨控制器不能获取到session.由于配置的是共享的session.本来以为是共享session出了问题,就在共享sess ...

  4. pathon基础2

    支持不同文件,不同sheet页 import xlrdimport xlwtimport osimport time; #往日志文件中追加内容函数def writeLogfile(filename,c ...

  5. Java将List中的实体按照某个字段进行分组的算法

    public void test() { List<User> list = new ArrayList<>(); //User 实体 测试用 String id,name; ...

  6. hive中笛卡尔积的优化

    由于一个业务,必须要进行笛卡尔积,但是速度太慢了,left join时左表大概4万条数据,右表大概 3000多条数据,这样大概就是一亿多条数据, 这在大数据领域其实不算很大的数据量,但是hive中跑的 ...

  7. Ubuntu系统下电脑驱动的安装(wifi无线网卡)

    今天给自己的笔记本电脑安装了新的Ubuntu 16.04但是安装之后发现wifi无法启用.这里特说明解决过程. 首先,网上的大部分教程是 选择"系统设置",点击"软件和更 ...

  8. 嵌入式Linux-Bmp转jpeg

    代码: /**************************************************************************** Ãû³Æ£º jpeg.c ¹ŠÄÜ ...

  9. execute,executeQuery,executeUpdate的区别是什么?

    a.Statement的execute(String query)方法用来执行任意的SQL查询,如果查询的结果是一个ResultSet,这个方法就返回true.如果结果不是ResultSet,比如in ...

  10. python之scrapy框架基础搭建

    一.创建工程 #在命令行输入scrapy startproject xxx #创建项目 二.写item文件 #写需要爬取的字段名称 name = scrapy.Field() #例 三.进入spide ...