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 跨目录访问文件相关推荐

  1. 【Python中的权限错误:无法访问文件】-- 解决方案

    [Python中的权限错误:无法访问文件]-- 解决方案 在Python编程过程中,我们常常会遇到文件读写.创建.删除等操作.有时候当我们试图进行这些操作时,会出现"PermissionEr ...

  2. 关于PrintQueueCollection()类,跨线程调用错误“线程无法访问此对象,因为另一个线程拥有该对象”

    使用System.Printing.PrintQueueCollection()   纸质打印机获取 _generalPrinters = new PrintQueueCollection(); pu ...

  3. python批量读取文件名_Python遍历目录并批量更换文件名和目录名的方法

    本文实例讲述了Python遍历目录并批量更换文件名和目录名的方法.分享给大家供大家参考,具体如下: #encoding=utf-8 #author: walker #date: 2014-03-07 ...

  4. python达梦数据库_Python 编程可以访问达梦数据吗?

    可以,但官方只给了python2.7版本的包,python3目前无法使用,此外达梦自己的linux客户端只支持redhat或者centos.请首先在系统安装达梦客户端,下载地址如下: 具体流程如下: ...

  5. python创建空文本文件_Python干货:「文件处理整合」 创建、打开、写入和删除...

    什么是Python文件处理? Python文件处理就是如何在python中创建.打开.读取.写入和删除文件的示例.从文件(EXCELSheet.doc文件.文本文件.cv等)或Add中读取数据.是一个 ...

  6. python服务端编程_Python实现的简单文件传输服务器和客户端

    还是那个题目(题目和流程见java版本),感觉光用java写一点新意也没有,恰巧刚学习了python,何不拿来一用,呵呵: 服务器端: import SocketServer, time class ...

  7. python不同目录调用_python3 不同目录间模块调用

    #Author by Andy #_*_ coding:utf-8 _*_ #__file__获取当前程序的相对路径 import os,sys #print(__file__) # os.path. ...

  8. python文件目录无权限_python检查目录文件权限并修改目录文件权限的操作

    我就废话不多说了,还是直接看代码吧! # -*- coding: utf-8 -*- # @author flynetcn import sys, os, pwd, stat, datetime; L ...

  9. python安装目录结构_python软件目录结构规范

    软件目录结构规范 软件开发规范 一.为什么要设计好目录结构? 1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的 ...

最新文章

  1. 网页调用本地播放器的代码支持ie,chroome, 火狐不支持
  2. hbase2.0 vs hbase1.x 延时比较
  3. 【BZOJ 1528】 1528: [POI2005]sam-Toy Cars (贪心+堆)
  4. C Primer+Plus(十七)高级数据表示 编程练习(二)
  5. 靠能力赚大钱,是最最可笑的谎言
  6. ora-24247:网络访问被访问控制列表(ACL)拒绝
  7. usb接口供电不足_主板接口不认识?一分钟带你了解电脑主板接口
  8. python后端程序例子_Python MR程序示例
  9. 计算机视觉图像去噪原理,图像去噪方法研究进展
  10. Zookeeper C API 指南七(Zookeeper 辅助 API 介绍)
  11. POJ 1002 UVA 755 487--3279 电话排序 简单但不容易的水题
  12. FFmpeg学习(6)——视频拼接
  13. 简单概述PHP的命名空间及其在自动载入上的应用
  14. python gif压缩_压缩gif的正确姿势
  15. 4g网卡MF831移植到smart210
  16. AndroidMPChart——BarChart
  17. webrtc与stunserver、turnserver建立连接花费时间十秒左右
  18. 基于TCP Socket和Websocket实现的相互即时通信系统
  19. 服务注册与发现 — 选择 CP 还是 AP?
  20. 我是如何实现「朋友圈图片评论」的?

热门文章

  1. 单片机c语言数码显示实验报告,单片机动态显示技术实验报告.doc
  2. php查询sql2008数据库操作系统,使用 PHP 进行查询 - Azure SQL Database SQL Managed Instance | Microsoft Docs...
  3. 西南大学网络教育学院计算机答案,西南大学网络与继续教育学院课程《数字信号处理》2018年春季大作业机考 答案.doc...
  4. bh1750采集流程图_lcd_bh1750 通过 采集环境光照度,并在野火stm32mini板子的屏幕上显示。 SCM 机开发 272万源代码下载- www.pudn.com...
  5. ap协议java_AP计算机科学A:Java编程类和对象
  6. 【系统架构设计师】2020-08-06
  7. JAVA秒杀mysql层实现_Java商城高并发秒杀系统架构分析设计与开发实战
  8. 应用程序无法启动_Windows 10触发启动应用程序警报,以避免系统变慢
  9. 动态规划经典算法--最大子段和
  10. 数学--数论--POJ281(线性同余方程)