一名前端工作人员的python爬虫实践记录【7】--用xlwt库进行数据存储【下】:跨目录文件导入

101 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情

前文回顾

一名前端工作人员的python爬虫实践记录【1】——通过urllib封装请求

一名前端工作人员的python爬虫实践记录【2】---BeautifulSoup

一名前端工作人员的python爬虫实践记录【3】--用正则表达式匹配html文档【上】

一名前端工作人员的python爬虫实践记录【4】--用正则表达式匹配html文档【中】

一名前端工作人员的python爬虫实践记录【5】--用正则表达式匹配html文档【下】

一名前端工作人员的python爬虫实践记录【6】--用xlwt库进行数据存储【上】

书接上文

在上文中,我们已经实现了自定义类xlwt的封装,现在的问题就是,怎么才可以对我们的模块进行跨目录的调用。

跨目录的文件引用

我的目录结构是这样的:

image.png

其中,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)

image.png

由此可见,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

至此,我们的模块就封装导入完成啦!

我是短袖撸码蒂尔尼
一名热爱阿森纳的前端工程师
如果本文对您有帮助,可以给一个免费的赞吗?谢谢!

名片.jpg