linux下python的文件路径操作

如何在linux下通过import来导入自定义的模块

  • 1.首先运行python,输入以下命令来获取系统中Python的默认路径:
   import sys
   sys.path 
比如,其中一个路径是:/usr/local/python/lib/python2.7/site-packages/ 这时可以把自己编写的工程放入到该目录下。比如我编写了一个基于知网来计算词语相似度的程序,所有的模块都放在 包wordSimilarity中。 /usr/local/python/lib/python2.7/site-packages/wordSimilarity/
_init_.py
primitive.py
word.py
wordsimilarity.py
WHOLE.DAT
glossary.dat

注意,文件夹中wordSimilarity必须包含_ init _.py文件,这时候才是python包,否则知识一般的文件夹,是不可以import导入的。

  • 2.在/usr/local/python/lib/python2.7/site-packages/目录下建立**(随便名字).pth文件,在该文件中输入wordSimilarity包的绝对路径,/usr/local/python/lib/python2.7/site-packages/wordSimilarity/,保存。
  • 3.此时,就可以Import我们自定义的模块了。
import wordSimilarity as ws
from wordSimilarity import wordsimilarity
...

关于os.path的使用

在上面提到的利用知网来计算词语相似度的程序,因为需要从文件(即上面的WHOLE.DAT和glossary.dat或者.txt文件)中读入词条,所以需要把包含词条的文件随模块放在一起才能被正确调用。之前都是用全路径来调用,是在太愚蠢了。
先上代码(获取glossary.dat文件):

"""这方法是看了jieba分词的源码才知道的,非常感谢~~"""
_get_module_path = lambda path: os.path.normpath(os.path.join(
os.path.dirname(__file__), path))
path = _get_module_path("glossary.dat")

结巴分词的源码是这样的:

_get_module_path = lambda path: os.path.normpath(os.path.join(os.getcwd(),
                                                 os.path.dirname(__file__), path))
DEFAULT_IDF = _get_module_path("idf.txt")

但是我的理解是:这个os.getcwd()似乎是多余的,因为os.getcwd()获取的是当前执行命令的所在路径,假设当前路径不是在/usr/local/python/lib/python2.7/site-packages/wordSimilarity/,都是没用的。
下面介绍一下os.path的常用方法来解释一下为什么:

import os

# 获取目前运行程序所在的绝对路径
os.path.getcwd()

# 返回路径名path的规范化的绝对路径。在大多数平台,这等同于这样
# normpath(join(os.getcwd(), path))调用normpath()函数
os.parh.abspath(path)

# 返回路径名为path的目录名
os.path.dirname(path)
os.path.dirname(__file__) # __file__返回所调用的模块的绝对路径

# 将一个或多个路径正确地连接起来。如果任何一个参数是绝对路径,那之前的参数就会被丢弃,然后连接继续
os.path.join(path1[, path2[, ...]])

最主要的是:print os.path.dirname(_file_)
一般来说,.py文件中所要读写的文件,最好是和.py文件放在同一个层中,这样会更加方便。

后记

词语相似度的代码基本完成了,但是还需要继续优化。调用方式如下:

import wordsimilarity as ws

word1 = "打架"
word2 = "战斗"
# 计算两个词语的相似度
sim = ws.simWordStr(word1, word2)
...
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值