Binary

to be foolish,to be hungry

有的事拼命的想要忘记,到最后真的就忘了


Download the theme

Python 跨目录访问文件

1.同级、同目录的文件之间的访问


有这样一个目录结构

img

假如,in_A.py 这个文件想调用 hello_world.py 中的函数怎么办呢? —»> ‘ import

只需在 in_A.py 中 写入

1 import hello_world 2 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列表查看哈

import sys

print(sys.path)

到这里,就明白了同级同目录之间的文件访问了

2.同级、不同目录的文件之间的访问


现在来了个这样的目录结构

img

如果说 in_B.py 这位老兄也想访问 hello_world.py 里的对象怎么办呢? 直接 import是肯定就不行啦,因为当前目录下找不到,环境变量里也找不到。

如果 import content_A 会是什么效果呢?当然也是不行的。content_A 没在环境变量里。既然他没有在环境变量里那就把他的“ father ”加进去吧,为啥加他的上级目录?它的父级目录再环境变量里的话,找到他的父级目录也就找到他了。

把上级目录加入环境变量:

1 import os 2 import sys 3 path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 4 # print(path) 5 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网络编程(初识)一些概念套接字:套接字(socket)也叫通信端点,最初用于计算机内部进程之间的通信,而随着网络的发展,套接字被用于计算机之间的通信。举个例子,你(是一台计算机)要打电话给你的朋友(另一台计算机),你只有朋友的电话号码可不行,还得有台电话,而这台电话就相当于一个套接字。套接字有两种一种基于文件,一种基于网络。基于文件可以简单理解为用于进程通信的,基于网络的可以简单理解为用于计算机之间的通信的。而他们又被分为了不同的地址家族(address family,抽象的名...…

继续阅读
更早的文章

Bugku Login1(skctf)

——login1(SKCTF)Sql 约束攻击:做个小实验创建数据表:(用户名的长度设为25个字符)插入数据,管理员用户名(admin)和密码(admin)查询,一个不存在的用户,确定用户不存在,再把该用户插入由于用户名最长设置为25,而插入的数据长度超过了25,所以后面的 ‘1’ 被截断,这时再查询表里的内容,发现有两个 ’admin‘ ,但是第二个 ’admin‘ 其实是 ‘admin ’但使用select 语句时,查询内容(ad...…

继续阅读