Python_9 py文件导入和路径处理
一、查缺补漏
Python中两个值交换可以直接交换如:a,b=b,a
冒泡就是从小到大排序,因为越到后越大
自动导包也适用于自己创建的模块
5. 内置异常汇总https://www.cnblogs.com/nmb-musen/p/10856023.html
6. HTTP接口传输数据常用的方式https://www.cnblogs.com/xianmin/p/13971389.html
7. 执行选中的代码快捷键 alt + shift + e
二、模块(py文件)导入
概念
包:init.py 文件是包的标识符,在导入包的时候会自动执行,有这个文件就是包。
模块:.py结尾的文件叫模块
结构:项目>包>模块,在项目右键New>Python package
模块导入 import
模块的分类
python自带模块,本来就有的直接导入就行,如time
第三方模块,要安装才能导入引用,如requests
自定义的模块,自己写的py文件,如homework.py
python内py文件的导入:import 模块名称 使用: 模块名称.要使用的内容
自建py文件的导入:import 模块名称
from 模块名称 import 类名称、函数名称、变量(标识符)指要使用的内容
*:表示导入所有的变量、函数、类
导包遇到的问题
导入包时明明看到有这个包但是导不了导包时有语法提示,红波浪线:
导包的顺序有问题,没有遵守导包格式或计算机找不到包
解决方法:查询应在什么目录下的文件才能找到,将文件移到地址下(查看python变量)
import sys print(sys.path) 结果为一堆地址
如果不在移动到地址下的操作:
pycharm包管理--包(右键)>Mark Directory as> sources root
打开的根目录有多个项目,也会出问题:应该从项目开始导入
from 项目名称.模块名称 import 类名称、函数名称、变量(标识符)
三、路径处理
获取路径
获取当前py文件的绝对路径,返回结果包括文件名
print(_ file _)
获取当前文件所在目录的绝对路径,不包括文件名 导入os import os
result = os.path.dirname(_ file _) print(result)
查看当前工作路径--工作路径可以使用os.chdir()进行切换会但集成到git中
在同一路径下直接输入dir命令可查看
在不同的路径时使用代码:res = os.getcwd() print(res)
返回指定文件的绝对路径,不是查询功能是拼接功能,将指定的文件拼接到当前的相对路径下
res = os.path.abspath("指定的文件") print(res)
路径拼接 os.path.join(path1,path2.....) path装着地址
不显示添加\,会自动补齐
如:path1="member"
path2="login"
path3="index.html"
res = os.path.join(path1,path2,path3) 结果为:member\login\index.html
添加\时会以斜杠的为开始,斜杠之前的都舍弃,多个路径有\会以最后一个带\的路径为开始路径前面的会丢弃掉,这个路径为绝对路径,如果每个路径都加了\,会以最后一个为准,前面的都会被舍弃掉
如: import os
path1="member"
path2="\login"
path3="index.html"
res = os.path.join(path1,path2,path3)
print(res) 结果为\login\index.html
其他方法
os.mkdir(path,mode) 创建目录 path里装路径,mode是权限
os.chdir(path) 切换工作目录,最好不切目录
os.rmdir(path) 删除空目录,删除空文件夹,一定要是空的
os.listdir(path) 返回指定路径下的文件或者目录如['.idea', 'homework.py'],像Terminal中的dir命令
os.path.isdir(path) 判断是否是目录,返回True和False
os.path.isfile(path) 判断是否是文件,返回True和False
os.remove(file) 删除文件 file="要删除的文件名" 同目录下,路径是一个目录,将抛出OSError
os.removedirs(file) 只能删除子文件夹中的空文件夹,非空无法删除
shutil.rmtree(file) 表示递归删除文件夹下的所有子文件夹和子文件
魔术方法 以双下划线开头以双下划线结尾的方法叫魔术方法~
_ file _:当前文件的绝对路径
_ name _:获取函数的名称
列:print(要查询的函数._ name _) 结果为:函数名
_ doc _:获取函数的注释内容(多行注释)
列:print(要查询的函数._ _doc _ _) 结果为:函数开发时的注释
_ dict _:获取对象的所有属性【掌握】
列:print(要查询的函数._ _doc _ _) 结果为:函数的一堆属性
四、异常处理
异常:当程序在运行过程中遇到了一个错误,无法执行,出现的一些提示和报错信息
常见异常:
NameError : name 'xx' is not defined 名字xx没找到,使用一个还未赋予对象的变量
SyntaxError : unexpected EOF while parsing 语法错误
IndexError: list index out of range 范围越界了超出边界,没有值
KeyError: '10' 没有这个值,找不到,空指针
IOError:输入输出异常
AttributeError:试图访问一个对象没有的属性
ImportError:无法引入模块或包,基本是路径问题
IndentationError:语法错误,代码没有正确的对齐
异常捕获:为了代码在错了之后继续执行
try:...except: 在try后输入可能存在异常的代码,except之后输入用户可以看到的回复
try:
print("可能出现异常的代码")
except:
print("代码执行报错之后执行的代码")
finally 类似于if…else,如果try后的有报错,则走except,走完之后再走finally
try:
print("可能执行报错的代码")
except:
print("代码执行报错之后执行的代码")
finally:
print("不管代码执行是否报错都会执行的代码")
else 如果try后的有报错,则走except,如果try后没有报错则走else
try:
#print(name)
print("可能执行报错的代码")
except:
print("代码执行报错之后执行的代码")
else:
print("代码执行不报错的时候执行这里的代码")
traceback Exception 异常抛出
解释:try后的代码有报错则except中的e输出报错内容,traceback.print_exc()输出错误在哪,然后再执行except的代码,当try不报错的时候执行else后的代码,这个方法需要导入库import traceback
try:
print(name)
print("可能执行报错的代码")
except Exception as e :
print(e)
print(traceback.print_exc()) -------------自动化时标红的内容需要收入日志
print("代码执行报错之后执行的代码")
else:
print("代码执行不报错的时候执行这里的代码")
raise 自定义异常 断言
解释:当捕获print(name)报错之后要把raise Exception("这里是异常")抛出
try:
print(name)
print("可能执行报错的代码")
except Exception as e :
raise Exception("这里是异常")

五、一些知识点
pycharm中配置setting>Editor>General>Auto Import 和导包有关的配置
快速自动导包:想要导入x,可以通过自动导报快捷键,直接出现import 模块名,不用手动码字
windows: 鼠标放置x,alt+回车
mac:鼠标放置x,option+回车
绝对路径:总是从根文件夹开始,Window 系统中以盘符(C:、D:)作为根文件夹,而 OS X 或者 Linux 系统中以 / 作为根文件夹。
相对路径:指的是文件相对于当前工作目录所在的位置。例如,当前工作目录为 "C:\Windows\System32",若文件 demo.txt 就位于这个 System32 文件夹下,则 demo.txt 的相对路径表示为 ".\demo.txt"
Python_9 py文件导入和路径处理的更多相关文章
- PyCharm在同一个包(package)下,如何把一个.py文件导入另外一个.py文件下
PyCharm在同一个包(package)下,如何把一个.py文件导入另外一个.py文件下 在同一个包下只需要用import 掉以后就可以找到模块所在的位置,但是如果不在同一个包下,在需要返回父级调用 ...
- 使用PyQt5编写一个简单的GUI程序(pyside 有 pyside-uic 把ui文件转成py文件,pyside-rcc 把qrc文件转成 py文件导入就行了)
我做Python窗口界面编程时,经常使用PyQt进行设计.这里简单叙述一下使用PyQt5制作一个简单的图形界面的流程 PyQt的简介以及开发环境的搭建在此不多赘述. 1. 打开Qt Des ...
- 学习django笔记一:在urls.py中导入sign应用views文件的问题
>python-admin startproject guest #创建guest项目 >python3 manage.py startapp sign #在guest项目中创建 ...
- python如何编译py文件生成pyc、pyo、pyd以及如何和C语言结合使用
python执行py文件的流程 当我们执行一个py文件的时候,直接python xx.py即可,那么这个流程是怎么样的呢.先说明一下,python执行代码实际上是先打开文件然后执行里面的代码,所以文件 ...
- 使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件
使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件 前期准备: 安装 python:https://www ...
- python之模块py_compile用法(将py文件转换为pyc文件)
# -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块py_compile用法(将py文件转换为pyc文件):二进制文件,是由py文件经过编译后 ...
- 初学者:__init__.py文件的作用
__init__.py 文件的作用及意义 __init__.py文件是一个包必须的文件,即使它是空的,但也是必须的,如果没有这个文件,python将不会把该文件夹当做一个package,而仅仅是一个d ...
- pycharm导入本地py文件时,模块下方出现红色波浪线时如何解决
有时候导入本地模块或者py文件时,下方会出现红色的波浪线,但不影响程序的正常运行,但是在查看源函数文件时,会出现问题 问题如下: 解决方案: 1. 进入设置,找到Console下的Python Co ...
- 在Google Colab中导入一个本地模块或.py文件
模块与单个.py文件的区别,模块中含有__init__.py文件,其中函数调用使用的是相对路径,如果使用导入.py文件的方法在Google Colab中导入模块 会报错:Attempted relat ...
- Jupyter notebook导入Pycharm项目的.py文件里的模块及方法
Jupyter notebook导入Pycharm项目种的.py文件里的模块及方法 需要在Jupyter notebook里调用自己写的代码,过程如下. 首先在Pycharm里写好一个文件,例如DCC ...
随机推荐
- postgresql建表空间、建库、建模式、建用户的规范
一.官方概念说明 1.表空间(表空间位置不应该位于数据目录内) 性能优化:您可以将高I/O的表和索引放在高速磁盘上,而将不经常访问的表放在普通的磁盘上. 管理磁盘空间:当数据库存储空间不足时,可以通过 ...
- three.js教程8-渲染器WebGLRenderer和前端UI界面
1.html的UI交互界面与Canvas画布叠加 需求:把threejs Cavnas画布和HTML元素叠加布局,在canvas上添加按钮,通过按钮点击修改canvas场景. // canvas画布绝 ...
- CSS操作——display属性
display可以指定元素的显示模式,它可以把行内元素修改成块状元素,也可以把别的模式的元素改成行内元素.diisplay常用的值有四个. 语法: /* display: block; // 声明当前 ...
- C#简易商城收银系统v1.1简单工厂实现(2-2)
C#简易商城收银系统v1.1简单工厂实现(2-2) 当初: C#简易商城收银系统v1.0 现在: 用之前的工厂模式对商城收银系统v1.0进行升级 可以参考之前的 C#简易商城收银系统v1.0 随笔 ...
- Android 13 - Media框架(23)- ACodecBufferChannel
关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将了解 ACodecBufferChannel 上一节我们了解到input buffer 和 output buffer 是如何分配的了, ...
- LOTO示波器软件新增导览功能
新版本的大部分型号LOTO示波器的上位机软件我们改成了导航工具条方式.原来的方式是把所有功能都显示在不同的标签页中,这样的优点是非常快捷方便,基本上用鼠标一两次点击就能直达想要的功能设置.但是缺点是不 ...
- 电源电路E24系列反馈电阻计算表格
可调电源,包括DCDC.LDO电路的设计中,经常需要计算反馈电阻进行选型.为了提高效率,优化选型采购,抽空做了个表格进行快速计算. 1.一般反馈电阻电路如下. 输出电压公式为:Vout=Vfb*(Rh ...
- 【Java编程教程】详解Java 中的对象和类
在本页中,我们将了解 Java 对象和类.在面向对象的编程技术中,我们使用对象和类来设计程序. Java中的对象既是物理实体又是逻辑实体,而Java中的类只是逻辑实体. 什么是Java中的对象 具有状 ...
- 8.14考试总结(NOIP模拟39)[打地鼠·竞赛图·糖果·树]
一举一动,都是承诺,会被另一个人看在眼里,记在心上的. T1 打地鼠 解题思路 数据范围比较小,不需要什么优化. 直接二维前缀和枚举右下角端点就好了. code #include<bits/st ...
- itestwork(爱测试) 开源一站式接口测试&敏捷测试工作站 9.0.2Rc2发布
(一)itest 简介 itest work (爱测试) 一站式工作站让测试变得简单.敏捷,"好用.好看,好敏捷" ,是itest wrok 追求的目标.itest work 包 ...