当前位置: 主页 > Python语言

python 打开文件夹-python读取文件夹下文件

发布时间:2023-02-09 07:23   浏览次数:次   作者:佚名

我自己写了一个py文件。 我之前一直把这个文件复制到当前目录下,用import导入。

但是后来觉得这样太麻烦了,修改的时候容易造成混乱和错误。

于是突然想到,能不能像pandas一样打包安装python 打开文件夹,会方便很多。

于是找了很多资料,发现有这么一个方法。

折腾了一天,各种错误,总算是搞定了。

1.严格的目录结构

目录结构必须符合:

MyPackages/
├── README.txt # txt或md格式;txt必须为ANSI编码,否则打包时会出错
├── setup.py # 此文件必不可少
└── MyKlines/ # 文件夹,名称为模块的名称
	├── __init__.py # 必须,里面可以没有代码
	└── MyKlines.py  # 这是需要打包的py文件

2.创建__init__.py文件

在MyKlines文件夹下创建__init__.py文件,__init__.py文件内容如下:

# 导入当前目录的.MyKlines
from .MyKlines import *  # 此项为必须!必不可少!
__version__ = '1.0'  # 设置版本信息

3.放置MyKlines.py文件

将需要打包的MyKlines.py复制到MyKlines文件夹中,与__init__.py同级。

4.setup.py文件

在需要打包的模块所在目录下创建一个setup.py文件,即MyPackages文件夹。

下列哪个软件不可以用\"打开\"命令直接打开pdf文件_python 打开文件夹_python读取文件夹下文件

from setuptools import setup
# from setuptools import find_packages
setup(
    name="MyKlines",
    version="2022.12.2",
    author="梦悠",
    author_email="1756186835@qq.com",  # 作者邮箱
    url='',  # github或者自己的网站地址
    description="绘制K线、反转图、砖型图等;获取股票和期货数据",
    long_description=open('README.txt').read(),  #读取文件中介绍包的详细内容
    long_description_content_type="text/markdown",  # 指定详细描述的文本格式
    python_requires=">=3.6.0",  # python依赖版本
    license="MIT Licence",  # 指定许可证
    install_requires=[""],  # 需要安装的依赖,如["matplotlib", "talib", "pylab", "numpy", "pandas", "baostock"]
    packages=[
        "MyKlines",
    ],  # 打包目录下的指定模块
    # packages=find_packages(),  # 打包目录下的全部模块
    # packages=find_packages(exclude=["test", "test.*"])			# 打包除了指定模块的全部模块
    # include_package_data = True,									# 打包路径下的其他文件
    platforms="any",  # 程序适用的软件平台列表
)

5.CMD进入setup.py所在目录

python 打开文件夹_下列哪个软件不可以用\"打开\"命令直接打开pdf文件_python读取文件夹下文件

在 CMD 命令行中,输入 setup.py 文件所在的目录。

注意:该命令需要输入两次。

# 第一次输入 cd E:\Python\MyPackage
C:\Users\caogu>cd E:\Python\MyPackage
# 第二次输入 E:
C:\Users\caogu>E:

或者在setup.py文件所在目录的地址栏输入cmd,回车打开命令行。

6.运行打包命令

python setup.py bdist_wheel

运行结果:

running bdist_wheel
running build
installing to build\bdist.win-amd64\wheel
running install
running install_egg_info
running egg_info
creating MyKlines.egg-info
writing MyKlines.egg-info\PKG-INFO
writing dependency_links to MyKlines.egg-info\dependency_links.txt
writing top-level names to MyKlines.egg-info\top_level.txt
writing manifest file 'MyKlines.egg-info\SOURCES.txt'
reading manifest file 'MyKlines.egg-info\SOURCES.txt'

下列哪个软件不可以用\"打开\"命令直接打开pdf文件_python读取文件夹下文件_python 打开文件夹

writing manifest file 'MyKlines.egg-info\SOURCES.txt' Copying MyKlines.egg-info to build\bdist.win-amd64\wheel\.\MyKlines-2022.12.2-py3.8.egg-info running install_scripts creating build\bdist.win-amd64\wheel\MyKlines-2022.12.2.dist-info\WHEEL creating 'dist\MyKlines-2022.12.2-py3-none-any.whl' and adding 'build\bdist.win-amd64\wheel' to it adding 'MyKlines-2022.12.2.dist-info/METADATA' adding 'MyKlines-2022.12.2.dist-info/WHEEL' adding 'MyKlines-2022.12.2.dist-info/top_level.txt' adding 'MyKlines-2022.12.2.dist-info/RECORD' removing build\bdist.win-amd64\wheel

打包完成后生成3个文件夹:

MyKlines.egg-info
dist
build

可安装的 wheel 文件在 dist 文件夹中

MyKlines-2022.12.2-py3-none-any.whl

7.打开dist文件夹,在cmd中安装whl文件

pip install MyKlines-2022.12.2-py3-none-any.whl

安装成功:

Processing e:\python\mypackage\dist\myklines-2022.12.2-py3-none-any.whl

下列哪个软件不可以用\"打开\"命令直接打开pdf文件_python 打开文件夹_python读取文件夹下文件

Installing collected packages: MyKlines Successfully installed MyKlines-2022.12.2

做个测试:

from MyKlines import *
data = get_data_juejin(symbol="bu2301", start="2022-12-2", end="2022-12-2 23:00:00", frequency="15m", adjust=0)
print(data)

完美运行:

                  date  symbol frequency    open   close    high     low  volume       money  position
0  2022-12-02 09:15:00  bu2301       15m  3462.0  3475.0  3484.0  3460.0   15299  5.3121e+08    124838
1  2022-12-02 09:30:00  bu2301       15m  3475.0  3478.0  3481.0  3473.0    4380  1.5230e+08    124355
2  2022-12-02 09:45:00  bu2301       15m  3478.0  3493.0  3495.0  3478.0    6288  2.1931e+08    124486
3  2022-12-02 10:00:00  bu2301       15m  3493.0  3523.0  3523.0  3488.0   13946  4.8931e+08    124601
4  2022-12-02 10:15:00  bu2301       15m  3523.0  3516.0  3524.0  3515.0    8586  3.0217e+08    125492
5  2022-12-02 10:45:00  bu2301       15m  3516.0  3524.0  3525.0  3510.0    6973  2.4534e+08    125447
6  2022-12-02 11:00:00  bu2301       15m  3524.0  3534.0  3535.0  3517.0    7355  2.5921e+08    125067
7  2022-12-02 11:15:00  bu2301       15m  3534.0  3542.0  3544.0  3530.0   12721  4.5010e+08    125301
8  2022-12-02 11:30:00  bu2301       15m  3541.0  3544.0  3548.0  3536.0    7481  2.6508e+08    124536
9  2022-12-02 13:45:00  bu2301       15m  3541.0  3538.0  3543.0  3527.0    9235  3.2655e+08    125234
10 2022-12-02 14:00:00  bu2301       15m  3538.0  3544.0  3545.0  3535.0    5780  2.0462e+08    125464
11 2022-12-02 14:15:00  bu2301       15m  3543.0  3556.0  3558.0  3542.0    7657  2.7184e+08    125087
12 2022-12-02 14:30:00  bu2301       15m  3557.0  3542.0  3562.0  3539.0    7927  2.8152e+08    124268

python 打开文件夹_python读取文件夹下文件_下列哪个软件不可以用\"打开\"命令直接打开pdf文件

13 2022-12-02 14:45:00 bu2301 15m 3543.0 3540.0 3553.0 3535.0 5598 1.9834e+08 123743 14 2022-12-02 15:00:00 bu2301 15m 3540.0 3537.0 3547.0 3532.0 22021 7.7935e+08 121299 15 2022-12-02 21:15:00 bu2301 15m 3536.0 3552.0 3556.0 3513.0 27498 9.7131e+08 118748 16 2022-12-02 21:30:00 bu2301 15m 3553.0 3542.0 3556.0 3538.0 8426 2.9888e+08 118993 17 2022-12-02 21:45:00 bu2301 15m 3543.0 3534.0 3544.0 3530.0 11737 4.1514e+08 118833 18 2022-12-02 22:00:00 bu2301 15m 3533.0 3515.0 3535.0 3514.0 9716 3.4224e+08 117886 19 2022-12-02 22:15:00 bu2301 15m 3515.0 3502.0 3517.0 3488.0 16185 5.6649e+08 115532

补充:打包时遇到的错误! 1.ModuleNotFound错误

我们导入自定义模块import MyKlines时,提示错误:

ModuleNotFoundError: No module named 'MyKlines'

这是因为setup()函数在setup.py文件中没有这段代码:

packages=[ "MyKlines",]  # 打包目录下的指定模块

简单来说就是没有正确打包,需要的模块没有打包到wheel文件中。

2.属性错误

模块已经安装,pip list也看到了模块,可以导入到py文件中python 打开文件夹,但是模块中的函数无法使用。

AttributeError: module 'MyKlines' has no attribute 'get_data_juejin'

这是因为 __init__.py 文件中的错误。

__init__.py 的代码中,缺少导入模块的命令。

只需添加以下命令。 注意力。 必不可少。

from .MyKlines import *  # 此项为必须!必不可少!注意.不可缺少!