Python 跨.py文件调用自定义函数说明

 更新时间:2020年06月01日 10:26:01   作者:dzg_  
这篇文章主要介绍了Python 跨.py文件调用自定义函数说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

0 前言

os.chdir() :用于改变当前python工作的目录到指定的路径

sys.path:是python搜索模块的一个路径集,为list,自定义的包可以把存放路径加进去,之后直接调用包名就行了。

1 同一文件夹

一般当前的工作路径是在搜索路径里面,所以不用sys.path.append,如果调用包的时候报错,先使用sys.path查看当前路径在不在list里,不在list里加进去才能直接调用自定义包。

一个文件夹内有两个 .py 文件:

exe101.py
FileWriteAbout.py

我们想在exe101.py文件内调用FileWriteAbout.py文件中的 任意 一个自定义函数。

假如调用FileWriteAbout.py文件中的函数writeList():

直接在exe101.py中输入:

import FileWriteAbout # 导入另一个文件
FileWriteAbout.writeList() #调用其中的函数名

#或者下面这种,只是调用时省略py文件名容易导致不同包内的函数名字冲突
from FileWriteAbout import *
writeList() #直接写函数名

ps:

如果只涉及被调用py文件中的一个具体函数

就可以将调入形式写成:

from FileWriteAbout import writeList
writeList()

2 不同文件夹下

两个py文件不再一个目录的情况下

2.1 用append将待调用文件路径加入搜索list

import sys
sys.path.append(r"D:\MathElectric\python\exercises") 
 # 待引用的py文件路径加到了搜索列表里

import FileWriteAbout # py 文件名
FileWriteAbout.writeList() # 具体函数

2.2 使用imp包

导入imp包:

import imp

AA = imp.load_source(name,pathname[,file])

将源py文件pathname导入到名字为name的模块中,name可以是自己定义。

例如:

import imp # 导入
CC = imp.load_source('MM',r'D:\MathElectric\python\exercises\FileWriteAbout.py')

使用时:

方法(1):直接使用

CC.writeList()

方法(2):导入别名使用

import MM
MM.writeList()

3 spyder使用相对路径读取文件

绝对路径读取文件没有问题。

data = pd.read_excel(r"D:/project/UCIpowerPre/CCPP/Folds5x2_pp.xlsx")

使用spyder写代码的时候想使用相对路径直接读数据,

data = pd.read_excel(r"CCPP/Folds5x2_pp.xlsx")

发现报错。

其实就是代码编辑的工作路径和数据路径不对应。

我们可以把工作路径切换到待读取文件所在的位置。

或者在spyder右上角把当前的工作路径改一下。

import os
os.chdir(r"D:/project/UCIpowerPre")

重点区分这几个路径的区别:

当前的工作路径

py文件包的搜索路径

数据文件所在路径

补充知识:python只引入模块并不能直接调用该模块的函数

如下图:

这里只引入了recognizer模块,没有直接引入其函数,会报错name 'XXX' is not defined

若想频繁使用某个函数,可以将它赋值给一个本地变量

如:

predict = recognizer.predict
clean_captcha = recognizer.clean_captcha
get_captcha = recognizer.get_captcha

以上这篇Python 跨.py文件调用自定义函数说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 如何利用Python批量处理行、列和单元格详解

    如何利用Python批量处理行、列和单元格详解

    因为之后的工作可能会经常用到excel,而且也不想荒废Python,出于为以后做准备以防不时之需,下面这篇文章主要给大家介绍了关于如何利用Python批量处理行、列和单元格的相关资料,需要的朋友可以参考下
    2021-09-09
  • Python用 KNN 进行验证码识别的实现方法

    Python用 KNN 进行验证码识别的实现方法

    这篇文章主要介绍了Python用 KNN 进行验证码识别的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python画图系列之个性化显示x轴区段文字的实例

    python画图系列之个性化显示x轴区段文字的实例

    今天小编就为大家分享一篇python画图系列之个性化显示x轴区段文字的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python实现打印螺旋矩阵功能的方法

    Python实现打印螺旋矩阵功能的方法

    这篇文章主要介绍了Python实现打印螺旋矩阵功能的方法,简单描述了螺旋矩阵的概念、原理及Python实现方法,需要的朋友可以参考下
    2017-11-11
  • 用 Python 定义 Schema 并生成 Parquet 文件详情

    用 Python 定义 Schema 并生成 Parquet 文件详情

    本文将演示两个例子,一个是没有层级的两个字段,另一个是含于嵌套级别的字段,将要使用到的 Python 模块有 pandas 和 pyarrow,感兴趣是我小伙伴请和小编一起学习下面文章内容吧
    2021-09-09
  • python计算N天之后日期的方法

    python计算N天之后日期的方法

    这篇文章主要介绍了python计算N天之后日期的方法,涉及Python操作日期的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • 使用python判断你是青少年还是老年人

    使用python判断你是青少年还是老年人

    今天来给大家讲讲python中最基本的 if 条件语句,这几乎是所有编程语言中都存在的语句,只是语法结构稍有不同。这篇文章给大家分享使用python判断你是青少年还是老年人,感兴趣的朋友一起看看吧
    2018-11-11
  • python向量化与for循环耗时对比分析

    python向量化与for循环耗时对比分析

    这篇文章主要介绍了python向量化与for循环耗时对比分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • SpringMVC和SpringBoot接收参数的几种方式详解

    SpringMVC和SpringBoot接收参数的几种方式详解

    这篇文章主要介绍了SpringMVC和SpringBoot接收参数的几种方式详解,Spring是分层的JavaSE/EE应用轻量级开源框架,以IoC和AOP为内核,提供了展现层 Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,需要的朋友可以参考下
    2023-07-07
  • 让你相见恨晚的十个Python骚操作

    让你相见恨晚的十个Python骚操作

    这篇文章主要给大家介绍了十个让你相见恨晚的Python骚操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论