当前位置:首页 » 编程语言 » python包含其他文件

python包含其他文件

发布时间: 2023-08-20 14:19:28

⑴ 包含多个文件夹python项目打包为可执行文件exe

block_cipher = None

a = Analysis(['main.py', 'monitor.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_mole\\caption_recognizer.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_mole\\image_recognizer.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_mole\\image_vectorizer.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_mole\\network2.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_mole\\test_fun.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_mole\\unicom_area.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_mole\\unicom_area_finder.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_mole\\unicom_area_include_caption_judger.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_mole\\value_vectorizer.py'],
pathex=['E:\\py_project\\test_wpf_python_msg'],
binaries=[],
datas=[('E:\\py_project\\test_wpf_python_msg\\images', 'images'),
('E:\\py_project\\test_wpf_python_msg\\network_parameters', 'network_parameters')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='main',
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='main')
(1)第一个列表中写所有的py文件,与main一个文件夹的可以直接写文件名,不一个文件夹的需要写完整的文件路径。
我曾试过在pathex中加入其他文件的路径,然后其他py文件不写完整路径,只写文件名,但是失败了。
(2)datas是中的元素是tuple类型,tuple的第一个参数是python项目中data文件(非py文件)的路径,
第二个参数是data在exe中保存此资源的文件夹名,要和项目中的文件夹名相同
(3)最重要: 因为编译成exe之后的main.exe是在最外层的文件夹的。因为main.py是入口文件,所以被调用的其他py文件的当前路径都是main.py文件的当前路径。所以在源代码中就一定要把main.py放到最外层的项目文件夹中,这样main.py的当前路径才能和main.exe的路径保持一致,才能让其他的py文件的当前路径不变,他们才可以找到data资源。
4.用之前配置的spec文件制作exe: pyinstaller -d main.spec
使用-d制作出来的exe比使用-f的快很多,因为-f把所有dll文件都打包到一个exe中了。
5.生成的exe在dist文件夹中

⑵ 怎么样理解一个python项目的各种文件

在Python中引用是非常简单的事情,这里需要清楚三个概念就可以了包、模块、类。类这个就不用说了。

模块对应的是一个.py文件,那么mole_name就是这个文件去掉.py之后的文件名,py文件中可以直接定义一些变量、函数、类。

那么包我们可以看作一个包含__init__.py和一系列.py文件的文件夹,这样做的目的是为了区别包和普通字符串。

importmole_name

frompackage_nameimportmole_name

frompackage_nameimport *

那么如何import时,python解释器如何才能找到该模块放置的文件位置呢?python寻找模块的优先级如下:

1、当前文件目录

2、环境变量PYTHONPATH

3、sys.path(list类型)

sys.path是list类型,我们可以通过insert(), append()方法来增加模块导入的搜索路径,如:

import sys

path = “……” #需要增加的路径

sys.path.insert(0, path)

在import模块时,该模块的顶层代码将会被执行一次。如果该模块被import多次,例如import A, import B.其中B模块本身也有import A,那么只在第一次被import的时候顶层代码会被执行。

模块能像包含函数定义一样,可包含一些可执行语句。这些可执行语句通常用来进行模块的初始化工作。这些语句只在模块第一次被导入时被执行。这非常重要,有些人以为这些语句会多次导入多次执行,其实不然。

模块在被导入执行时,python解释器为加快程序的启动速度,会在与模块文件同一目录下生成.pyc文件。我们知道python是解释性的脚本语言,而.pyc是经过编译后的字节码,这一工作会自动完成,而无需程序员手动执行。

什么时候你应该使用frommoleimport?

  • 如果你要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用frommoleimport。

  • 如果你想要有选择地导入某些属性和方法,而不想要其它的,使用frommoleimport。

  • 如果模块包含的属性和方法与你的某个模块同名,你必须使用importmole来避免名字冲突。

  • 除了这些情况,剩下的只是风格问题了,你会看到用两种方式编写的Python代码。

    尽量少用from mole import *,因为判定一个特殊的函数或属性是从哪来的有些困难,并且会造成调试和重构都更困难。

    其它要点:

    在创建许许多多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。包对应于文件夹,使用包的方式跟模块也类似,唯一需要注意的是,当文件夹当作包使用时,文件夹需要包含__init__.py文件,主要是为了避免将文件夹名当作普通的字符串。__init__.py的内容可以为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在from package-name import *这语句使用的,全部导出定义过的模块。

    那么我们平常新建文件的时候,都是建一个.py文件(类似java,但是python不用建立类,是以模块为载体)至于怎样组织包就要功能需要了

    在C/C++/Java中,main是程序执行的起点,Python中,也有类似的运行机制,但方式却截然不同:Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Python的main函数。

    每个文件(模块)都可以任意写一些没有缩进的代码,并且在载入时自动执行,为了区分主执行文件还是被调用的文件,Python引入了一个变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为'__main__'。这个特性,为测试驱动开发提供了极好的支持,我们可以在每个模块中写上测试代码,这些测试代码仅当模块被Python直接执行时才会运行,代码和测试完美的结合在一起。

    典型的Python文件结构:

    python import模块方法

    python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。
    下面将具体介绍几种常用情况:
    (1)主程序与模块程序在同一目录下:
    如下面程序结构:
    `-- src
    |-- mod1.py
    `-- test1.py
    若在程序test1.py中导入模块mod1, 则直接使用importmod1或from mod1 import *;

    (2)主程序所在目录是模块所在目录的父(或祖辈)目录
    如下面程序结构:
    `-- src
    |-- mod1.py
    |-- mod2
    | `-- mod2.py
    `-- test1.py
    若在程序test1.py中导入模块mod2, 需要在mod2文件夹中建立空文件__init__.py文件(也可以在该文件中自定义输出模块接口); 然后使用 from mod2.mod2 import * 或import mod2.mod2.

    (3)主程序导入上层目录中模块或其他目录(平级)下的模块
    如下面程序结构:
    `-- src
    |-- mod1.py
    |-- mod2
    | `-- mod2.py
    |-- sub
    | `-- test2.py
    `-- test1.py
    若在程序test2.py中导入模块mod1和mod2。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立该文件。然后调用方式如下:
    下面程序执行方式均在程序文件所在目录下执行,如test2.py是在cd sub;之后执行python test2.py
    而test1.py是在cd src;之后执行python test1.py; 不保证在src目录下执行python sub/test2.py成功。
    import sys
    sys.path.append("..")
    import mod1
    import mod2.mod2

    (4)从(3)可以看出,导入模块关键是能够根据

⑶ python py文件中执行另一个py文件

方法一、

import os

os.system("python filename.py")

方法二:

execfile('xx.py'),括号内为py文件路径;

注:如果需要传参数,就用os.system()那种方法;如果还想获得这个文件的输出,那就得用os.popen();

(3)python包含其他文件扩展阅读:

Python入门命令行怎么调用.py文件中容易出现的问题

1、如果文件路径是这样的:C:Userssd est.py,那么在命令行状态下输入:

C:Userssd> python test.py

2、如果是交互式输入状态(>>>←有三个这种折就是交互式状态),需要输入:>>> exit()

就会变回命令行状态。

3、如果文件路径是:D: est.py ,那么在命令行状态下输入:

C:Userssd> python D: est.py

4、还可以用“cd 文件夹名字”进入新的当年文件夹。

⑷ python 路径下有哪些文件

#方法1:使用os.listdir
import os
for filename in os.listdir(r'c:\windows'):
print filename

#方法2:使用glob模块,可以设置文件过滤
import glob
for filename in glob.glob(r'c:\windows\*.exe'):
print filename

#方法3:通过os.path.walk递归遍历,可以访问子文件夹
import os.path
def processDirectory ( args, dirname, filenames ):
print 'Directory',dirname
for filename in filenames:
print ' File',filename

os.path.walk(r'c:\windows', processDirectory, None )

⑸ python 引用别的文件类

首先要你在文件夹B里放一个__init__.py的文件,
然后就可以在test.py中:
from .B.b import 类名

望采纳!

⑹ python 怎么引用其他文件的类

在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址。所以如果要在当前脚本引用其他文件,除了将文件放在和脚本同一目录下,还有以下几种方法,
1. 将文件所在位置添加到sys.path中
import sys
sys.path.insert(0, '/path/to/application/app/folder') # or sys.path.append('/path/to/application/app/folder')

import file

2. 在文件目录下新建__init__.py文件然后调用文件
from application.app.folder.file import func_name

init.py文件
a).init.py文件的作用
该文件的主要作用使初始化Python包。如果目录下面包含了该文件,Python解释器就会将该目录当做一个包,下一步就可以使用import语句在别的.py脚本中引用该目录下的文件。一个标准Python模块的结构如下所示:
package/
__init__.py
file.py
file2.py
subpackage/
__init__.py
submole1.py
submole2.py

b). __init__文件可以为空但可以用来建立对包的需求。一般来说会在该文件中写那些类,函数等需要被导入到包水平,从而可以被方便的引用。比如:如果file.py文件中有一个File类,在init.py文件中啥都没写时引用File类需要这样操作:
from package.file import File

如果在__init__.py文件中将file导入包,那就在包水平可以直接引用File类:
# in your __init__.py
from file import File

# in your script
from package import File

此外,还需要注意的一点是__init__.py文件中的all变量。如果解释器在__init__.py文件中观察到了__all__变量,那么在运行from package import *时就只会引入__all__变量中列出的那些模块。例如:如果想在上述结构的只引入submole1模块,那么可以在subpackage/__init__.py文件中定义__all__ = ['submole1'],当引用subpackage时from subpackage import *就只引入了submole1模块。
3. 将文件所在目录添加到python的环境变量
export PYTHONPATH=$HOME/pathToYourScripts/:$PYTHONPATH

⑺ 用python把文件夹下的所有文件包括文件夹里面的文件都拷贝到同一个目录下

importos
importshutil

defwenjian(path):
ifos.path.isfile(path):
shutil.(path,'c:\new_dir')
ifos.path.isdir(path):
lists=os.listdir(path)
foriinlists:
wenjian(i)

foriinos.walk('c:\1'):
wenjian(i)

建议你把检索到的文件都放到一个新的文件夹里,要不然系统在同一个文件夹里不停的读取和写入可能会陷入死循环以至出错。

热点内容
sql语句on 发布:2025-02-05 07:41:42 浏览:596
取消电脑密码怎么设置8 发布:2025-02-05 07:24:16 浏览:393
洗脑编程 发布:2025-02-05 07:23:52 浏览:948
osd加密 发布:2025-02-05 07:17:39 浏览:36
微信游戏源码下载 发布:2025-02-05 07:17:29 浏览:384
计算机内存储器是 发布:2025-02-05 07:13:35 浏览:144
classpathlinux 发布:2025-02-05 07:12:57 浏览:564
linuxftp连接失败 发布:2025-02-05 07:01:40 浏览:705
学生信息管理系统java 发布:2025-02-05 06:58:45 浏览:576
刺客信条4解压后 发布:2025-02-05 06:55:23 浏览:901