python跨目录调用_python 跨目录访问文件
1.同级、同目录的文件之间的访问
有这样一个目录结构
假如,in_A.py 这个文件想调用 hello_world.py 中的函数怎么办呢? --->>> import
只需在 in_A.py 中 写入
importhello_world
hello_world.functions()
这样就可以访问啦,什么原理呢?
import hello_world的本质
首先,import 语法会将 hello_world 里的所有内容解释(一行一行的读)到内存中,并把它赋值给hello_world 这个对象,然后我们就可以通过点号(' . ')访问这个对象里的内容了,比如调用函数,使用变量......
比如 hello_world.hello() 就是调用了hello_world.py 里的 hello() 方法。
接下来一个问题,import 是怎么找到 hello_world.py 这个文件的呢?
--->>> import 首先会在当前目录下找,没找到就去环境变量里找。
环境变量,可以通过 sys 模块下的 path列表查看哈
importsysprint(sys.path)
到这里,就明白了同级同目录之间的文件访问了
2.同级、不同目录的文件之间的访问
现在来了个这样的目录结构
如果说 in_B.py 这位老兄也想访问 hello_world.py 里的对象怎么办呢? 直接 import是肯定就不行啦,因为当前目录下找不到,环境变量里也找不到。
如果 import content_A 会是什么效果呢?当然也是不行的。content_A 没在环境变量里。既然他没有在环境变量里那就把他的“ father ”加进去吧,为啥加他的上级目录?它的父级目录再环境变量里的话,找到他的父级目录也就找到他了。
把上级目录加入环境变量:
importosimportsys
path= os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#print(path)
sys.path.append(path)
dirname() ,返回上级目录
abspath() ,把相对路劲转化为绝对路径
__flie__变量存储的是当前文件的相对路径
最后通过 append() 把一个路径加入环境变量,完成了上面的 一系列操作以后,问题又来了
之前 import 的是 .py的文件,现在直接 import 了一个目录,解释器会干什么呢?如果一个目录下有一堆文件他应该 import 那个呢?
hh,解释器是很聪明的,他会跑去解释目录下的 __init__.py文件。通常这个文件都是没有内容的,但是解释器既然都去了,那么就给几行代码给他解释一下吧。
这时就可以用把 content_A 的父级目录加入环境变量的方法,把 content_A 加入环境变量,把代码写入__init__.py就好了,这时就可以愉快的在 in_B.py 里 import, “content_A”目录下的文件啦,不只限于 hello_world
3.不同级、不同目录的文件之间的访问
有了上面的思路,想 import 谁,把他的父级目录送进环境变量就可以了,就不举例子了
python跨目录调用_python 跨目录访问文件相关推荐
- 【Python中的权限错误:无法访问文件】-- 解决方案
[Python中的权限错误:无法访问文件]-- 解决方案 在Python编程过程中,我们常常会遇到文件读写.创建.删除等操作.有时候当我们试图进行这些操作时,会出现"PermissionEr ...
- 关于PrintQueueCollection()类,跨线程调用错误“线程无法访问此对象,因为另一个线程拥有该对象”
使用System.Printing.PrintQueueCollection() 纸质打印机获取 _generalPrinters = new PrintQueueCollection(); pu ...
- python批量读取文件名_Python遍历目录并批量更换文件名和目录名的方法
本文实例讲述了Python遍历目录并批量更换文件名和目录名的方法.分享给大家供大家参考,具体如下: #encoding=utf-8 #author: walker #date: 2014-03-07 ...
- python达梦数据库_Python 编程可以访问达梦数据吗?
可以,但官方只给了python2.7版本的包,python3目前无法使用,此外达梦自己的linux客户端只支持redhat或者centos.请首先在系统安装达梦客户端,下载地址如下: 具体流程如下: ...
- python创建空文本文件_Python干货:「文件处理整合」 创建、打开、写入和删除...
什么是Python文件处理? Python文件处理就是如何在python中创建.打开.读取.写入和删除文件的示例.从文件(EXCELSheet.doc文件.文本文件.cv等)或Add中读取数据.是一个 ...
- python服务端编程_Python实现的简单文件传输服务器和客户端
还是那个题目(题目和流程见java版本),感觉光用java写一点新意也没有,恰巧刚学习了python,何不拿来一用,呵呵: 服务器端: import SocketServer, time class ...
- python不同目录调用_python3 不同目录间模块调用
#Author by Andy #_*_ coding:utf-8 _*_ #__file__获取当前程序的相对路径 import os,sys #print(__file__) # os.path. ...
- python文件目录无权限_python检查目录文件权限并修改目录文件权限的操作
我就废话不多说了,还是直接看代码吧! # -*- coding: utf-8 -*- # @author flynetcn import sys, os, pwd, stat, datetime; L ...
- python安装目录结构_python软件目录结构规范
软件目录结构规范 软件开发规范 一.为什么要设计好目录结构? 1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的 ...
最新文章
- 网页调用本地播放器的代码支持ie,chroome, 火狐不支持
- hbase2.0 vs hbase1.x 延时比较
- 【BZOJ 1528】 1528: [POI2005]sam-Toy Cars (贪心+堆)
- C Primer+Plus(十七)高级数据表示 编程练习(二)
- 靠能力赚大钱,是最最可笑的谎言
- ora-24247:网络访问被访问控制列表(ACL)拒绝
- usb接口供电不足_主板接口不认识?一分钟带你了解电脑主板接口
- python后端程序例子_Python MR程序示例
- 计算机视觉图像去噪原理,图像去噪方法研究进展
- Zookeeper C API 指南七(Zookeeper 辅助 API 介绍)
- POJ 1002 UVA 755 487--3279 电话排序 简单但不容易的水题
- FFmpeg学习(6)——视频拼接
- 简单概述PHP的命名空间及其在自动载入上的应用
- python gif压缩_压缩gif的正确姿势
- 4g网卡MF831移植到smart210
- AndroidMPChart——BarChart
- webrtc与stunserver、turnserver建立连接花费时间十秒左右
- 基于TCP Socket和Websocket实现的相互即时通信系统
- 服务注册与发现 — 选择 CP 还是 AP?
- 我是如何实现「朋友圈图片评论」的?
热门文章
- 单片机c语言数码显示实验报告,单片机动态显示技术实验报告.doc
- php查询sql2008数据库操作系统,使用 PHP 进行查询 - Azure SQL Database SQL Managed Instance | Microsoft Docs...
- 西南大学网络教育学院计算机答案,西南大学网络与继续教育学院课程《数字信号处理》2018年春季大作业机考 答案.doc...
- bh1750采集流程图_lcd_bh1750 通过 采集环境光照度,并在野火stm32mini板子的屏幕上显示。 SCM 机开发 272万源代码下载- www.pudn.com...
- ap协议java_AP计算机科学A:Java编程类和对象
- 【系统架构设计师】2020-08-06
- JAVA秒杀mysql层实现_Java商城高并发秒杀系统架构分析设计与开发实战
- 应用程序无法启动_Windows 10触发启动应用程序警报,以避免系统变慢
- 动态规划经典算法--最大子段和
- 数学--数论--POJ281(线性同余方程)