携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情
前文回顾
一名前端工作人员的python爬虫实践记录【1】——通过urllib封装请求
一名前端工作人员的python爬虫实践记录【2】---BeautifulSoup
一名前端工作人员的python爬虫实践记录【3】--用正则表达式匹配html文档【上】
一名前端工作人员的python爬虫实践记录【4】--用正则表达式匹配html文档【中】
一名前端工作人员的python爬虫实践记录【5】--用正则表达式匹配html文档【下】
一名前端工作人员的python爬虫实践记录【6】--用xlwt库进行数据存储【上】
书接上文
在上文中,我们已经实现了自定义类xlwt的封装,现在的问题就是,怎么才可以对我们的模块进行跨目录的调用。
跨目录的文件引用
我的目录结构是这样的:
其中,test.py是我在测试中需要运行的python文件。
而在我的目录结构下,需要引入的myxlwt文件是属于另一个目录myvenv下的文件。
因此作为一名前端工程师,我下意识的使用了下面的这行代码:
import xlwt from '../myvenv/xlwt,py'
然后报错了。
wtf?python居然不支持这种根目录查找的写法吗?
python导入其他目录模块的文件的机制
根据不会就百度,再不会就谷歌的原则,我开始了一番搜索进行答案查找。很快就被我发现了,原来python的目录查找机制如下:
python中从其他目录中导入模块的关键是:系统(sys)能够找到通向模块文件的路径,即,sys.path中包含对应模块文件的路径。
也就是说,咱们可以通过往sys.path里进行导入myvenv目录就行了。
那首先看看,这个sys.path里面究竟有啥?
import sys
import os
print(sys.path)
由此可见,myvenv目录并不在,那咱们可以通过在sys.path.append() 添加myvenv就能实现跨目录的文件模块导入的需求了 但问题又来了,咱们为了复用肯定不会把绝对路径写进去,怎么才获取当前文件的父目录呢?
python 的 os库
既然涉及到了文件路径,那肯定也离不开os了。
python的os# — 各种操作系统接口
os提供了一种使用操作系统相关功能的可移植方式。 他的主要模块包括了:
读取或写入文件的[
open()]
操作路径的[os.path]
在命令行上读取所有文件中的所有行的[fileinput]
创建临时文件和目录的[tempfile]
对于高级文件和目录处理的[shutil]
而我们这里使用的是path模块
因此我们的代码引入模式是这样的:
# -*-coding:utf-8-*-
import bs4 # 网页解析
import re
import sys
import os
import time
fatherdir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))#父目录
sys.path.insert(0, fatherdir + "\myvenv")
import myXlwt
至此,我们的模块就封装导入完成啦!
我是短袖撸码蒂尔尼
一名热爱阿森纳的前端工程师
如果本文对您有帮助,可以给一个免费的赞吗?谢谢!