首页 > 编程语言 >Python_9 py文件导入和路径处理

Python_9 py文件导入和路径处理

时间:2023-04-23 13:57:17浏览次数:45  
标签:Python 代码 py 导入 报错 模块 print path os

一、查缺补漏

  1. Python中两个值交换可以直接交换如:a,b=b,a

  2. 冒泡就是从小到大排序,因为越到后越大

  3. 自动导包也适用于自己创建的模块

  4. 关于正斜杠和反斜杠https://www.cnblogs.com/yangjian319/p/4801675.html

   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文件)导入

  1. 概念

    1. 包:init.py 文件是包的标识符,在导入包的时候会自动执行,有这个文件就是包。

    2. 模块:.py结尾的文件叫模块

    3. 结构:项目>包>模块,在项目右键New>Python package

  2. 模块导入 import

    1. 模块的分类

      1. python自带模块,本来就有的直接导入就行,如time

      2. 第三方模块,要安装才能导入引用,如requests

      3. 自定义的模块,自己写的py文件,如homework.py

    2. python内py文件的导入:import 模块名称 使用: 模块名称.要使用的内容

    3. 自建py文件的导入:import 模块名称

from 模块名称 import 类名称、函数名称、变量(标识符)指要使用的内容

  1. *:表示导入所有的变量、函数、类

  2. 导包遇到的问题

    1. 导入包时明明看到有这个包但是导不了导包时有语法提示,红波浪线:

      1. 导包的顺序有问题,没有遵守导包格式或计算机找不到包

解决方法:查询应在什么目录下的文件才能找到,将文件移到地址下(查看python变量)

import sys print(sys.path) 结果为一堆地址

  1. 如果不在移动到地址下的操作:

pycharm包管理--包(右键)>Mark Directory as> sources root

  1. 打开的根目录有多个项目,也会出问题:应该从项目开始导入

from 项目名称.模块名称 import 类名称、函数名称、变量(标识符)

三、路径处理

  1. 获取路径

    1. 获取当前py文件的绝对路径,返回结果包括文件名

print(_ file _)

  1. 获取当前文件所在目录的绝对路径,不包括文件名 导入os import os

result = os.path.dirname(_ file _) print(result)

  1. 查看当前工作路径--工作路径可以使用os.chdir()进行切换会但集成到git中

    1. 在同一路径下直接输入dir命令可查看

    2. 在不同的路径时使用代码:res = os.getcwd() print(res)

  2. 返回指定文件的绝对路径,不是查询功能是拼接功能,将指定的文件拼接到当前的相对路径下

res = os.path.abspath("指定的文件") print(res)

  1. 路径拼接 os.path.join(path1,path2.....) path装着地址

    1. 不显示添加\,会自动补齐

如:path1="member"

path2="login"

path3="index.html"

res = os.path.join(path1,path2,path3) 结果为:member\login\index.html

  1. 添加\时会以斜杠的为开始,斜杠之前的都舍弃,多个路径有\会以最后一个带\的路径为开始路径前面的会丢弃掉,这个路径为绝对路径,如果每个路径都加了\,会以最后一个为准,前面的都会被舍弃掉

如: import os

path1="member"

path2="\login"

path3="index.html"

res = os.path.join(path1,path2,path3)

print(res) 结果为\login\index.html

  1. 其他方法

    1. os.mkdir(path,mode) 创建目录 path里装路径,mode是权限

    2. os.chdir(path) 切换工作目录,最好不切目录

    3. os.rmdir(path) 删除空目录,删除空文件夹,一定要是空的

    4. os.listdir(path) 返回指定路径下的文件或者目录如['.idea', 'homework.py'],像Terminal中的dir命令

    5. os.path.isdir(path) 判断是否是目录,返回True和False

    6. os.path.isfile(path) 判断是否是文件,返回True和False

    7. os.remove(file) 删除文件 file="要删除的文件名" 同目录下,路径是一个目录,将抛出OSError

    8. os.removedirs(file) 只能删除子文件夹中的空文件夹,非空无法删除

    9. shutil.rmtree(file) 表示递归删除文件夹下的所有子文件夹和子文件

 

  1. 魔术方法 以双下划线开头以双下划线结尾的方法叫魔术方法~

    1. _ file _:当前文件的绝对路径

    2. _ name _:获取函数的名称

列:print(要查询的函数._ name _) 结果为:函数名

  1. _ doc _:获取函数的注释内容(多行注释)

列:print(要查询的函数._ _doc _ _) 结果为:函数开发时的注释

  1. _ dict _:获取对象的所有属性【掌握】

列:print(要查询的函数._ _doc _ _) 结果为:函数的一堆属性

四、异常处理

  1. 异常:当程序在运行过程中遇到了一个错误,无法执行,出现的一些提示和报错信息

  2. 常见异常:

    1. NameError : name 'xx' is not defined 名字xx没找到,使用一个还未赋予对象的变量

    2. SyntaxError : unexpected EOF while parsing 语法错误

    3. IndexError: list index out of range 范围越界了超出边界,没有值

    4. KeyError: '10' 没有这个值,找不到,空指针

    5. IOError:输入输出异常

    6. AttributeError:试图访问一个对象没有的属性

    7. ImportError:无法引入模块或包,基本是路径问题

    8. IndentationError:语法错误,代码没有正确的对齐

 

  1. 异常捕获:为了代码在错了之后继续执行

    1. try:...except: 在try后输入可能存在异常的代码,except之后输入用户可以看到的回复

try:

print("可能出现异常的代码")

except:

print("代码执行报错之后执行的代码")

  1. finally 类似于if…else,如果try后的有报错,则走except,走完之后再走finally

try:

print("可能执行报错的代码")

except:

print("代码执行报错之后执行的代码")

finally:

print("不管代码执行是否报错都会执行的代码")

  1. else 如果try后的有报错,则走except,如果try后没有报错则走else

try:

#print(name)

print("可能执行报错的代码")

except:

print("代码执行报错之后执行的代码")

else:

print("代码执行不报错的时候执行这里的代码")

  1. 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("代码执行不报错的时候执行这里的代码")

  1. raise 自定义异常 断言

解释:当捕获print(name)报错之后要把raise Exception("这里是异常")抛出

try:

print(name)

print("可能执行报错的代码")

except Exception as e :

raise Exception("这里是异常")

Traceback (most recent calt last) :  File "D: .pv", line 80, in  raise Exception  Exception:

 

五、一些知识点

  1. pycharm中配置setting>Editor>General>Auto Import 和导包有关的配置

  2. 快速自动导包:想要导入x,可以通过自动导报快捷键,直接出现import 模块名,不用手动码字

    1. windows: 鼠标放置x,alt+回车

    2. mac:鼠标放置x,option+回车

  3. 绝对路径:总是从根文件夹开始,Window 系统中以盘符(C:、D:)作为根文件夹,而 OS X 或者 Linux 系统中以 / 作为根文件夹。

  4. 相对路径:指的是文件相对于当前工作目录所在的位置。例如,当前工作目录为 "C:\Windows\System32",若文件 demo.txt 就位于这个 System32 文件夹下,则 demo.txt 的相对路径表示为 ".\demo.txt"

 

 

 

标签:Python,代码,py,导入,报错,模块,print,path,os
From: https://www.cnblogs.com/Alisa-sweet/p/17346324.html

相关文章

  • 自动化测试框架pytest教程
    快速入门准备安装推荐安装anaconda,默认带pytest#pip3installpytest...$pytest-h#查看帮助...参考资料:https://pytest.orghttps://pypi.org/project/pytest第一个实例(通过)deftest_passing():assert(1,2,3)==(1,2,3)函数test_passing()......
  • html css 怎么导入外部css
    在HTML文件中导入外部CSS样式表,可以使用<link>标签。具体步骤如下:创建一个样式表文件(通常以.css扩展名为后缀),并将所有的CSS样式规则存放在该文件中。在HTML文件中添加一个<link>标签,指定rel="stylesheet"属性和href属性,其中href属性值应该是样式表文件的U......
  • Python之多进程与多线程
     1.1线程frommultiprocessingimportProcessdefshow(name):print("Processnameis"+name)if__name__=="__main__":proc=Process(target=show,args=('subprocess',))proc.start()proc.join()......
  • python 操作阿里云oss 对象存储上传下载文件
    python操作阿里云对象存储oss阿里云账号要有操作oss权限安装OSSSDKpipinstalloss2上传文件#-*-coding:utf-8-*-importoss2importos#阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控......
  • odoo中 py3o的打印报告中,报告的名字如果要取当天的日期或其它日期时,如果要导包,import
    odoo中py3o的打印报告中,报告的名字如果要取当天的日期或其它日期时,如果要导包,import timedate.这种在report的名字中,是请允许使用eval 这个函数(出于安全考虑)可以使用下面的来替代时间'orderrecap%s'%(time.strftime("%Y-%m-%d",time.localtime())) 还有一种方法是......
  • 给定一个正整数字符串,使用Python正则表达式在其千分位上添加逗号
    大家好,我是皮皮。一、前言前几天在Python黄金青铜群【沐】问了一个Python正则表达式的问题,这里拿出来给大家分享下。题目:给定一个正整数字符串,如12345678、345678,使用正则表达式在其千分位上添加逗号,如12,345,678、345,678。二、实现过程这里ChatGPT给了一个答案,可以使用......
  • python+playwright 学习-55 在docker 容器中运行playwright脚本
    前言Dockerfile.focal可用于在Docker环境中运行Playwright脚本。这些镜像包括在Docker容器中运行浏览器所需的所有依赖项,还包括浏览器本身。playwright在linux系统上目前只支持Ubuntu系统的部分版本,centos和debian系统上是没法运行的。镜像查看所有可用的图像标签ht......
  • python.h的使用方法
    Python.h是C语言中调用Python解释器的头文件,其中包含了许多常用的函数和数据类型。以下是Python.h中常用的方法和高级方法的示例代码:常用方法(1)Py_Initialize该函数用于初始化Python解释器。调用该函数后,才能使用Python解释器中的函数和模块。示例代码:#include<Python.h>i......
  • 图与网络——最小费用最大流Python实现
    最小费用最大流问题是经济学和管理学中的一类典型问题。在一个网络中每段路径都有“容量”和“费用”两个限制的条件下,此类问题的研究试图寻找出:流量从A到B,如何选择路径、分配经过路径的流量,可以在流量最大的前提下,达到所用的费用最小的要求。如n辆卡车要运送物品,从A地到B地。由于......
  • python--多线程:锁 、全局锁、Queue队列以及线程池
    关于如何加锁,获取钥匙,释放锁:lock=threading.Lock():生成锁对象,全局唯一;lock.acquire():获取锁。未获取到会阻塞程序,直到获取到锁才会往下执行;lock.release():释放锁,归回后,其他人也可以调用;【注意事项】:lock.acquire()和lock.release()必须成对出现,否则就有可能造成......