Python中module文件夹里__init__.py的功能
怎么引用模块
环境:win7 + python3.5.2
文档结构:
-project
-data
-src
-filterCorpus.py
-translateMonolingual.py
问题描述:在translateMonolingual.py中引用filterCorpus.py中的函数fun1
from src import filterCorpus
filterCorpus.fun1()
即使translateMonolingual.py和filterCorpus.py在同一文件夹下,若translateMonolingual.py中直接引用import filterCorpus会出错
。这是因为python3需要绝对路径引用,从project的根位置开始指明被引模块的位置。通用格式为:from directory import module 。如果module存在于directory1下的directory2,那么建议写成from directory1.directory2 import module
一般来说,需要引用python模块,可以用如下形式:
import xxx
import xxx as xx
from xxx import xx
比如我们引入numpy模块:
In [21]: import numpy In [22]: numpy
Out[22]: <module 'numpy' from '/home/chia/anaconda2/lib/python2.7/site-packages/numpy/__init__.pyc'>
然后在输入numpy,实际上我们看到,module numpy的路径实际上是一个__init__.pyc的文件。pyc文件是python编译器编译生成的字节码文件。通常py文件改动就会生成一个pyc,如果有pyc存在的话默认用pyc。
python module中的__init__.py文件实际上是执行import命令时访问的文件。换句话说,init的py文件是一个module的指示器。如果一个文件夹里面有这个py文件,那么它就可以被视为一个包,通过import引入,如果没有,则无法引入。
如果我们自己写一些函数,想要当做一个python 的模块通过import导入的话,有两种方式。
- 一种是写成xxx.py文件,然后通过from xxx import xfun
比如:
# this is util.py
def sayHello():
print "Hello"
然后在同一个文件夹中另一个文件中,调用这个模块
# this is main.py
from util import sayHello
这样是可行的。
- 如果写的函数比较多,而且又有不同类别的话,我们就需要把所有的文件和文件中的函数放在一个文件夹中了。那么,这个文件夹里面就要放一个空白的__init__.py
当然,我们说__init__.py只要有就可以,但是它本身是一个py文件,因此可以在里面写一些语句。
比如一个较为重要的变量是 __all__,它一般定义为module中的所有子文件。
比如一个文件夹叫做 utils,其中有a.py, b.py
那么,__all__就可以写成:
__all__ = ['a', 'b']
定义了这个all变量的好处是,我们在进行模糊引入的时候,即:
from utils import *
就可以将所有的子文件import进来,比如我们就可以引用utils.a了。
为什么需要_init_.py
_init_.py文件用于组织包(package)。这里首先需要明确包(package)的概念。什么是包(package)?简单来说,包是含有python模块的文件夹。一个python模块(module)为一个py文件,里面写有函数和类。包(package)是为了更好的管理模块(module),相当于多个模块的父节点。
当文件夹下有_init_.py时,表示当前文件夹是一个package,其下的多个module统一构成一个整体。这些module都可以通过同一个package引入代码中。
_init_.py文件怎么写
可以什么都不写,但如果想使用from package1 import *这种写法的话,需要在_init_.py中加上:
__all__ = ['file1','file2'] #package1下有file1.py,file2.py
引用时使用写法
from package1 import * file1.func1()
Python中module文件夹里__init__.py的功能的更多相关文章
- python 两个文件夹里的文件名对比
比如需要一个xml对应一个jpg时,有时候会不小心少了其中一个文件,这时可以用以下代码比较缺少的是哪个文件: # -*- coding: utf-8 -*- import os path1 = r'. ...
- python导入其他文件夹下的.py文件
想在globalpararm中导入read_config中的类 import sys sys.path.append('..') from common.read_config import Read ...
- python中对文件、文件夹,目录的基本操作
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...
- [转]python中对文件、文件夹的操作——os模块和shutil模块常用说明
转至:http://l90z11.blog.163.com/blog/static/187389042201312153318389/ python中对文件.文件夹的操作需要涉及到os模块和shuti ...
- Java以流的方式将指定文件夹里的.txt文件全部复制到另一文件夹,并删除原文件夹中所有.txt文件
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- python中对文件、文件夹的操作
python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod("test.txt") 创建空文件 2) open(&qu ...
- python 批量创建文件及文件夹(文件夹里再创文件)
python 批量创建文件及文件夹(文件夹里再创文件)思路:文件建到哪>文件名字叫啥>创建文件夹>去新建的文件下>新建文件>给文件里边写东西>写个反馈给控制台> ...
- python遍历文件夹中所有文件夹和文件,os.walk
python中可以用os.walk来遍历某个文件夹中所有文件夹和文件. 例1: import os filePath = 'C:/Users/admin/Desktop/img' for dirpat ...
- python 将指定文件夹中的指定文件放入指定文件夹中
import os import shutil import re #获取指定文件中文件名 def get_filename(filetype): name =[] final_name_list = ...
随机推荐
- Java高级部分概要笔记
复习 多线程 程序.进程.线程的概念.区别 并行.并发 创建线程的四种方式:继承Thread.实现Runnable接口.实现Callable接口.线程池 线程的生命周期 线程的同步方式,三种:同步方法 ...
- Ng ML笔记
目录 一.线性回归 1,假设函数.代价函数,梯度下降 2,特征处理 3,代价函数和学习速率 4,特征和多项式回归 5,正规方程 二.逻辑回归(Logistic Regression,LR) 1,假设函 ...
- Python:2维(平面/数组/矩阵)缺省值插值
学习自:python插值填补缺省值_插值缺失值2d python_weixin_39592315的博客-CSDN博客 问题 假设我们有一个2D数组(或者矩阵),其中有一些缺省值NaN,就像下边这样: ...
- Pandas:从CSV中读取一个含有datetime类型的DataFrame、单项时间数据获取
前言 有一个CSV文件test.csv,其中有一列是datetime类型,其他列是数值列,就像下边这样: 问题 1.读取该CSV文件,把datetime列转换为datetime类型,并将它设置为索引列 ...
- Typora笔记上传到博客
Typora笔记上传到博客 Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版.它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML.PDF 以及本 ...
- python+pytest接口自动化(6)-请求参数格式的确定
我们在做接口测试之前,先需要根据接口文档或抓包接口数据,搞清楚被测接口的详细内容,其中就包含请求参数的编码格式,从而使用对应的参数格式发送请求.例如某个接口规定的请求主体的编码方式为 applicat ...
- Sequelize关联查询,where影响全局的解决
需求背景 系统字段关联公司字段表,通过查询所有的系统字段然后关联查询指定的公司对应的字段. 问题代码 const sysField = ctx.model.SysDictionary; const c ...
- HCIE数据挖掘笔记-005数据挖掘专业名词
数据对象和属性类别: 数据一般有噪声,数量庞大,且来自不同的数据源 数据集由数据对象组成,一个数据对象代表一个实体 数据对象:样本.实例.数据点.对象 数据对象以数据元组的形式存放在数据库中,数据库的 ...
- uniapp小程序图片前端压缩上传
目录 1,前言 2,实现代码 1,前言 这次项目中做了一个图片上传,要求是大于2MB的就压缩成2MB一下的再上传,我这边利用了uniapp的文件接口,使用canvas做了一个压缩上传的功能,目前已上线 ...
- mac安装git
https://blog.csdn.net/shaock2018/article/details/91127607 继续报错 rm -rf /usr/local/Homebrew/Library/Ta ...