【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文件包的搜索路径
  • 数据文件所在路径

猜你喜欢

转载自blog.csdn.net/dzg_chat/article/details/85642552
今日推荐