python 文件夹py文件相互引用

news2024/12/23 23:35:28

文章目录

  • 前言
  • Python文件相互调用
    • 情况一:同级文件
    • 情况二:非同级文件
      • 上层调用下层
      • 下层调用上层
        • sys.path.append('.')详细测试
        • 同名测试
        • 引入结论
      • 跨文件夹调用
  • 总结

前言

我之前学过一些别的语言,例如Java,C#,JS。所以我上手python还是挺快的,毕竟语言一通百通。基本上都和C语言差不多。我写python优先考虑的是如何模块化地写程序,因为模块化以后好复用,把封装好的代码自己用就行了。

之前我解决了vscode如何打印文件名和行号的文件,现在解决python相互调用的问题。

Python文件相互调用

在这里插入图片描述

每个文件都有打印语句

print('我是Floder1的model1文件')

主函数

print('我是主函数')

文件路径

-Floder1:
	-model1.py
	-model2.py
-Floder2:
	-model3.py
	-model4.py
Main.py(主函数)
model5.py

情况一:同级文件

在这里插入图片描述

直接import就行了

import model5


print('我是主函数')


打印结果

主函数旁的model5
我是主函数

情况二:非同级文件

上层调用下层

在这里插入图片描述
也是直接调用

import Floder1.model1


print('我是主函数')

打印结果

我是Floder1的model1文件
我是主函数

下层调用上层

在这里插入图片描述

import sys
# 将上级目录添加到文件路径中
sys.path.append('.')
import model5

print('我是Floder1的model1文件')

打印结果


主函数旁的model5
我是Floder1的model1文件

Tips:sys.path.append(‘.’)是一个点还是两个点,我不清楚。我看网上是append(两个点),我测试了一下不行,得一个点

sys.path.append(‘.’)详细测试

我测试一下如果在引入别的文件会如何

import sys
# 将上级目录添加到文件路径中
sys.path.append('.')
import model5
import Main
import model2

print('我是Floder1的model1文件')

在这里插入图片描述

测试成功,在append之后引用同文件夹的文件,

同名测试

在这里插入图片描述
打印结果

Floder1里面的model5
我是主函数

测试结果是就近引入。

引入结论

sys.path.append(‘.’)这句话相当于添加了查找的路径,在多个文件夹中查找,如果有同名文件,则选择最近的那个

跨文件夹调用

在这里插入图片描述

import sys
# 将上级目录添加到文件路径中
sys.path.append('.')
from Floder2 import model3

print('我是Floder1的model1文件')

测试结果

我是Floder2的model3文件
我是Floder1的model1文件

总结

  • 同级引入。import model
  • 下级引入 from path import model或者import path.model
  • 上级引入 sys.path.append('path ') 添加搜索路径,如果有同名文件则找到最近的文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/745967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Threejs模型切片转3DTiles加载

个人主页: 左本Web3D,更多案例预览请点击》 在线案例 个人简介:专注Web3D使用ThreeJS实现3D效果技巧和学习案例 💕 💕积跬步以至千里,致敬每个爱学习的你。获取模型或源码请点赞收藏加留言,有问…

Scala中的集合

水善利万物而不争,处众人之所恶,故几于道💦 目录 一、集合简介 二、集合关系继承图 一、集合简介 Java中的集合: Scala中的集合: Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合…

Vue3+Vite+Pinia+Naive后台管理系统搭建之七:utils 工具构建

前言 如果对 vue3 的语法不熟悉的,可以移步Vue3.0 基础入门,快速入门。 1. cookie 保存工具 1.1 安装依赖 yarn add js-cookie // or npm install js-cookie 1.2 编写 src/utils/cookie.js // src/utils/cookie.js import Cookies from "js-co…

操作系统_计算机系统

目录 1. 操作系统的基本概念 1.1 操作系统的特征 1.1.1 并发(Concurrence) 1.1.2 共享(Sharing) 1.1.3 虚拟(Virtual) 1.1.4 异步(Asynchronism) 1.2 操作系统的目标和功能 …

FIR滤波器与IIR滤波器的区别与特点

目录 FIR滤波器与IIR滤波器的区别与特点 FIR滤波器定义: 特点: IIR滤波器定义: 特点: 区别: IIR滤波器有以下几个特点: IIR与FIR数字滤波器的比较: 1、从性能上比较 2、从结…

Firewalld防火墙 图形和字符

目录 字符界面 一、防火墙介绍 二、防火墙的基本应用 将防火墙接口划分到区域中 区域添加访问规则 图形界面 字符界面 安装图形化防火墙管理工具 [rootbogon ~]# yum -y install firewall-config 一、防火墙介绍 1、netfilter和防火墙管理工具 1)netfilter …

Unity Obfuscator 过滤指定目录下的所有类

视频 Unity Obfuscator 过滤指定目录下的所有class 源码 替换调 OptionsManager 脚本文件就可以了 using System.Collections.Generic; using UnityEngine; using UnityEditor;

Tomcat查看源码

比如需要从请求域拿数据 点击右上角的Choose Sources 找到对应源码的位置 源码 下载Tomcat源码 http://tomcat.apache.org 下载指定版本Tomcat https://archive.apache.org/dist/tomcat/ 下载下来解压即可

spring boot MySQL操作

极简spring boot MySQL测试 默认: spring boot环境已经搭好,可以跑最基本的hello world 有MySQL环境有部分测试数据表,并且有MySQL语法基础 配置 application.yml 如下配置,根据自己的数据库信息与个人需求配置 server: tomcat: uri-encoding: UTF-8 threads: …

为什么TCP是面向字节流协议

大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。 笔者在TCP 机制一文中有说到 TCP 是面向字节流的,这篇博客给大家介绍一下:为什么 TCP 是面向字节流协议的。 首先说一下 UDP ,是一…

prompt:有需求就有价值,prompt案例

prompt:有需求就有价值 此文章来自于小七姐 首先来看需求: 客户需要生成1000条俏皮灵动,趣味盎然,比喻精妙的和美食有关的短句子,要求文风优美,句子让人充满食欲。 客户使用这些句子的场景比较奇妙&…

eval() trim() dispaly:contents等属性的理解

1.eval(除去前后的双引号) 2.字符串.trim() 除去前后的空格 3.display:contents(提升到父级元素的子集元素)

How to Make Your Writing Stand Out From AI 如何让你的写作从人工智能中脱颖而出

Thanks to amazing tools such as ChatGPT, there is now a flood of well-written, functional, and useful writing to compete with if you’re a human writer. This means your writing needs to differentiate itself from this new breed of content. Here’s how to do…

OSError [Errno 22] Invalid argument(已解决)

最近跑别人的项目遇到一个这样的问题 OSError: [Errno 22] Invalid argument xxxxxxxxxxxxxxxxxx一开始以为是没有用管理员的权限运行,导致创建不了日志文件 后来发现是和windows的命名规则冲突了(以下来源官网地址) 命名约定 以下基本规…

希尔排序法解析

希尔排序法解析 什么是希尔排序法 希尔排序法(Shell Sort),也称为缩小增量排序,是一种改进的插入排序算法。它通过将待排序的元素按照一定的间隔分组,对每个分组进行插入排序,逐渐减小间隔直至为1&#x…

单个电源模块不带电感的直流压降仿真

单个电源模块不带电感的直流压降仿真 前面讲过POWER DC如何对单个电源模块带电感的直流压降仿真,下面介绍如何对单个电源模块不带电感的直流压降仿真,以下图为例

启动优化中的一些黑科技,了解一下~

1前言 启动速度优化是 android 开发中的常见需求,除了一些常规的手段之外,也有一些黑科技手段,我们来看一下这些黑科技手段是否有效,以及如何实现 本文主要是对Android 性能优化小册相关内容的学习实践,加入了自己的…

腾讯云服务器CVM实例族区别如何选择?

腾讯云服务器CVM有多种实例族,如标准型S6、标准型S5、SA3实例、高IO型、内存、计算型及GPU型实例等,如何选择云服务器CVM实例规格呢?腾讯云服务器网建议根据实际使用场景选择云服务器CVM规格,例如Web网站应用可以选择标准型S5或S6…

linux 读取文件,并输出含空格的每一行

[devusercdp-node12 ~]$ cat test.sh 1234 aaaa 2345 bbbb 3456 cccc 需求 输出三行 分别是 aaaa bbbb cccc 咋一看很简单,实则里面有很多小问题。 rescat test.sh 这个时候思考下 echo $res和 echo "$res"有啥区别 快速的写出for循环 结果 for i in …

Web3 开发指南:使用 NFTScan NFT API 构建一个 NFT 链上追踪器

对于大多数 Web3 团队来说,构建一个完整的链上 NFT 数据追踪系统是一项具有挑战性的任务,构建一个 NFT 链上追踪器更是如此。涉及到处理区块链上的智能合约和交易数据,并将其与外部数据源进行整合和分析工作量是十分巨大的: 区块链…