层次的递进与返回

#输入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. Python高级语法-私有属性-魔法属性(4.7.2)

    @ 目录 1.说明 2.代码 关于作者 1.说明 常用的一些魔法方法如下 所谓魔法方法,就是调用的时候 不好好正常调用 2.代码 class Test: """ 我是__ ...

  2. JDK8新特性详解(二)

    Stream流的使用 流操作是Java8提供一个重要新特性,它允许开发人员以声明性方式处理集合,其核心类库主要改进了对集合类的 API和新增Stream操作.Stream类中每一个方法都对应集合上的一 ...

  3. HTC Vive使用WebVR的方法以及启用后头显无画面的解决方法

    1.下载支持WebVR的浏览器. 笔者使用的是HTC Vive,故下载了Firefox的Nightly版本[下载地址]. 2.Nightly 开启WebVR的步骤[引用自Mozilla VR] 1.从 ...

  4. Winform Dock顺序调整

    在布局的时候,当一个窗体内有多个控件使用了Dock属性来布局,Dock顺序的调整: 最近被.net winform中的控件布局搞困惑了,由于控件都是使用Dock方式的,操作起来也是比较方便,如果最大化 ...

  5. 容器编排系统K8s之PV、PVC、SC资源

    前文我们聊到了k8s中给Pod添加存储卷相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14180752.html:今天我们来聊一下持久存储卷相关话题 ...

  6. x264编码demo定制修改介绍

    x264编码器,提供了两个demo来验证编码功能:一个是大而全的x264.c,另外一个是简洁版的example.c. 其中,前者demo,可以配置很多编码参数,但太冗长繁杂,对初学者不太友好.  后者 ...

  7. String 和 StringBuffer,StringBuilder 的区别

    String 和 StringBuffer,StringBuilder 的区别 String 是 " 字符串常量" , 对象一旦创建就不可改变,这就导致如果字符串常量池中没有所需对 ...

  8. CentOS7下常用安装软件服务rpm方式的介绍

    简介:介绍rpm软件包的管理 rpm安装:安装别人编译好的软件包,rpm即Redhat Package Manager,是Redhat的软件包管理方式   rpm安装优点: 软件已经编译打包,所以传输 ...

  9. 安装简易OpenShift单节点并配置DNS泛域名

    1 楔子 公司有个项目部署在 OpenShift 容器云平台上,出现问题较多,于是萌生在公司环境搭建现场仿真环境,由于资源没有生产环境多,就使用单节点简单模拟下 本文主要内容包括以下: 使用 Dnsm ...

  10. 一个简单的java项目使用hibernate连接mysql数据库

    实体类与表对应文件Customer.hbm.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTY ...