精华内容
下载资源
问答
  • Python - 文件管理系统

    千次阅读 2019-09-28 14:19:45
    一、概述 ...果不其然,第二个需求就来了,需要帮公司再写一个文件管理系统。 二、过程 1. 由于公司属于跟钱有关的行业,监管严格。所以公司的所有电脑U盘,网盘全都被限制了。不要说把公司的...

    一、概述

    前段时间帮公司写了一个资产管理的网站,(https://www.cnblogs.com/ddzj01/p/11316837.html),系统运行的比较稳定,小白的第一个项目得到了领导的肯定。果不其然,第二个需求就来了,需要帮公司再写一个文件管理的系统。

     

    二、过程

    1. 由于公司属于跟钱有关的行业,监管严格。所以公司的所有电脑U盘,网盘全都被限制了。不要说把公司的文件拷走,就连从外网把文件拷贝到公司的电脑上都不行,但实际上这个需求是有的,这咋办呢?
    2. 以前的办法是如果需要拷贝文件到公司电脑,需要填申请单,层层审批,最后把u盘交给管理员,管理员再把文件拷进来,这他妈的是多么蛋疼的做法!
    3. 所以亟需一个网站解决这个问题。现在通过开放几台公共电脑的U盘端口,用户可以通过自己的U盘在该电脑上传文件,上传的文件全部集中存放在公司的存储服务器中,然后在自己的办公电脑下载。监察员通过网站能够查看到每一个用户的上传下载记录。这样就解决了用户自由上传下载,又能实现留痕的功能。


    三、网站介绍

    网站角色定义

    普通用户:可以上传下载自己的文件
    监察员用户:可以上传自己的文件,可以下载任何人的文件,可以查看任何人的上传下载记录
    管理员用户:可以上传下载自己的文件,可以添加用户和分配用户权限,可以限制指定ip上传

     

    网站各项页面如何显示

    A、文件列表页
    监察员登陆
    1. 能看到所有人的文件
    2. 可以通过文件名或者用户名去搜索文件或搜索该用户名的所有文件
    3. 有导出列表功能

    普通用户或管理员登陆
    1. 只能看到自己的文件
    2. 只能通过文件名去搜索文件
    3. 无导出功能

    B、人员管理
    1. 只有管理员才有这个页面
    2. 管理员可以添加人员,重置人员密码

    C、日志记录
    1. 只有监察员才有这个页面

    D、设置
    1. 只有管理员才有这个页面
    2. 指定能够上传文件的ip


    四、相关截图

    项目地址:https://github.com/YangBaohust/wjgl

    loginlistuploadpersonlistsettingloglist


    五、总结

    当我发现我第一个python项目在github上面竟然有别人在用的时候,不知道有多开心,这算是对自己的一个鼓励吧。

    转载于:https://www.cnblogs.com/ddzj01/p/11452940.html

    展开全文
  • Python项目:学生信息管理系统(完整版)

    万次阅读 多人点赞 2018-06-06 19:11:10
    本文是基于上一篇(python项目:学生信息管理系统(初版) )进行了完善,并添加了新的功能。 主要包括有: 完善部分:输入错误;无数据查询等异常错误 新的功能:文件的操作:文件的读写,其中重点是对文本字符...

            本文是基于上一篇(python项目:学生信息管理系统(初版) )进行了完善,并添加了新的功能。

    主要包括有:

                完善部分:输入错误;无数据查询等异常错误

                新的功能:文件的操作:文件的读写,其中重点是对文本字符串的详细解析(关于整个解析拆解和重组详见代码,以及添加了注释)

    完整代码 https://github.com/hilqiqi0/sample/blob/master/student_info.py

    学生信息管理系统(完整版)

     

    学生信息管理项目,要求带操作界面,并完成每项操作:
    +----------------------+
    | 1)添加学生信息             |
    | 2)显示所有学生的信息          |
    | 3)删除学生信息             |
    | 4)修改学生信息             |
    | 5)按学生成绩高-低显示学生信息     |
    | 6)按学生成绩低-高显示学生信息     |
    | 7)按学生年龄高-低显示学生信息     |
    | 8)按学生年龄低-高显示学生信息     |
    | 9)保存学生信息到文件(students.txt)           |
    | 10)从文件中读取数据(students.txt)           |
    | 退出:其他任意按键<回车>                             |

    +----------------------+   

    详细代码如下:

    # student_info.py
    # 学生信息管理项目,要求带操作界面,并完成每项操作:
    # +----------------------+
    # | 1)添加学生信息                      |
    # | 2)显示所有学生的信息                 |
    # | 3)删除学生信息                      |
    # | 4)修改学生信息                      |
    # | 5)按学生成绩高-低显示学生信息         |
    # | 6)按学生成绩低-高显示学生信息         |
    # | 7)按学生年龄高-低显示学生信息         |
    # | 8)按学生年龄低-高显示学生信息         |
    # | 9)保存学生信息到文件(students.txt)      |
    # | 10)从文件中读取数据(students.txt)      |
    # | 退出:其他任意按键<回车>                 |
    # +----------------------+                        |
    
    
    def meun():
        menu_info = '''+----------------------+
    | 1)添加学生信息                           |
    | 2)显示所有学生的信息                     |
    | 3)删除学生信息                           |
    | 4)修改学生信息                           |
    | 5)按学生成绩高-低显示学生信息           |
    | 6)按学生成绩低-高显示学生信息           |
    | 7)按学生年龄高-低显示学生信息           |
    | 8)按学生年龄低-高显示学生信息           |
    | 9)保存学生信息到文件(students.txt)      |
    | 10)从文件中读取数据(students.txt)      |
    | 退出:其他任意按键<回车>                 |
    +----------------------+
    '''
        print(menu_info)
    
    
    # 以下二个函数用于sorted排序, key的表达式函数
    def get_age(*l):
        for x in l:
            return x.get("age")
    def get_score(*l):
        for x in l:
            return x.get("score")
            
    # 1)添加学生信息
    def add_student_info():
        L = []
        while True:
            n = input("请输入名字:")
            if not n:  # 名字为空 跳出循环
                break
            try:
                a = int(input("请输入年龄:"))
                s = int(input("请输入成绩:"))
            except:
                print("输入无效,不是整形数值....重新录入信息")
                continue
            info = {"name":n,"age":a,"score":s}
            L.append(info)
        print("学生信息录入完毕!!!")
        return L
    
    # 2)显示所有学生的信息
    def show_student_info(student_info):
        if not student_info:
            print("无数据信息.....")
            return
        print("名字".center(8),"年龄".center(4),"成绩".center(4))
        for info in student_info:
            print(info.get("name").center(10),str(info.get("age")).center(4),str(info.get("score")).center(4))
    
    # 3)删除学生信息
    def del_student_info(student_info,del_name = ''):
        if not del_name:
            del_name = input("请输入删除的学生姓名:")
        for info in student_info:
            if del_name == info.get("name"):
                return info
        raise IndexError("学生信息不匹配,没有找到%s" %del_name)
    
    # 4)修改学生信息
    def mod_student_info(student_info):
        mod_name = input("请输入修改的学生姓名:")
        for info in student_info:
            if mod_name == info.get("name"):
                a = int(input("请输入年龄:"))
                s = int(input("请输入成绩:"))
                info = {"name":mod_name,"age":a,"score":s}
                return info
        raise IndexError("学生信息不匹配,没有找到%s" %mod_name)
    
    # 5)按学生成绩高-低显示学生信息
    def score_reduce(student_info):
        print("按学生成绩高-低显示")
        mit = sorted(student_info ,key = get_score,reverse = True)
        show_student_info(mit)
    
    # 6)按学生成绩低-高显示学生信息
    def score_rise(student_info):
        print("按学生成绩低-高显示")
        mit = sorted(student_info ,key = get_score)
        show_student_info(mit)
    
    # 7)按学生年龄高-低显示学生信息
    def age_reduce(student_info):   
        print("按学生年龄高-低显示:")
        mit = sorted(student_info ,key = get_age,reverse = True)
        show_student_info(mit)
    
    # 8)按学生年龄低-高显示学生信息
    def age_rise(student_info): 
        print("按学生年龄低-高显示:")
        mit = sorted(student_info ,key = get_age)
        show_student_info(mit)
    
    # 9)保存学生信息到文件(students.txt)
    def save_info(student_info):
        try:
            students_txt = open("students.txt","w")     # 以写模式打开,并清空文件内容
        except Exception as e:
            students_txt = open("students.txt", "x")    # 文件不存在,创建文件并打开
        for info in student_info:
            students_txt.write(str(info)+"\n")          # 按行存储,添加换行符
        students_txt.close()
    
    # 10)从文件中读取数据(students.txt) 
    def read_info():
        old_info = []
        try:
            students_txt = open("students.txt")
        except:
            print("暂未保存数据信息")                       # 打开失败,文件不存在说明没有数据保存
            return
        while True:
            info = students_txt.readline()
            if not info:
                break
            # print(info)
            info = info.rstrip()    # 去掉换行符
            # print(info)
            info = info[1:-1]       # 去掉{}
            # print(info)
            student_dict = {}       # 单个学生字典信息
            for x in info.split(","):   # 以,为间隔拆分
                # print(x)
                key_value = []      # 开辟空间,key_value[0]存key,key_value[0]存value
                for k in x.split(":"):  # 以:为间隔拆分
                    k = k.strip()       # 去掉首尾空字符
                    # print(k)
                    if k[0] == k[-1] and len(k) > 2:        # 判断是字符串还是整数
                        key_value.append(k[1:-1])           # 去掉 首尾的'
                    else:
                        key_value.append(int(k))
                    # print(key_value)
                student_dict[key_value[0]] = key_value[1]   # 学生信息添加
            # print(student_dict)
            old_info.append(student_dict)   # 所有学生信息汇总
        students_txt.close()  
        return old_info   
    
    def main():
        student_info = []
        while True:
            # print(student_info)
            meun()
            number = input("请输入选项:")
            if number == '1':
                student_info = add_student_info()
            elif number == '2':
                show_student_info(student_info)
            elif number == '3':
                try:
                    student_info.remove(del_student_info(student_info))
                except Exception as e:
                    # 学生姓名不匹配
                    print(e)            
            elif number == '4':
                try:                
                    student = mod_student_info(student_info)
                except Exception as e:
                    # 学生姓名不匹配
                    print(e)
                else:
                    # 首先按照根据输入信息的名字,从列表中删除该生信息,然后重新添加该学生最新信息
                    student_info.remove(del_student_info(student_info,del_name = student.get("name")))  
                    student_info.append(student)
            elif number == '5':
                score_reduce(student_info)
            elif number == '6':
                score_rise(student_info)
            elif number == '7':
                age_reduce(student_info)
            elif number == '8':
                age_rise(student_info)
            elif number == '9':
                save_info(student_info)
            elif number == '10':
                student_info = read_info()
            else:
                break
            input("回车显示菜单")
    
    main()
    

     

     

     

     

    展开全文
  • python图书管理系统

    万次阅读 多人点赞 2019-05-12 12:09:59
    '''图书管理系统 1. 创建一个列表存储书籍信息,包括书名,作者名,价格 2. 创建一个列表存储用户信息,包括用户名,密码 3. 制作一个注册登录系统,登录后可以使用添加书籍,删除书籍, 修改书籍信息,查询单本书籍...

    以下三个文件需在同一目录下。json文件格式不能更改

    books-fxm.json

    [
        {
            "name": "图书管理",
            "author": "fxm",
            "price": "99999"
        },
        {
            "name": "完美世界",
            "author": "辰东",
            "price": "99"
        },
        {
            "name": "斗破苍穹",
            "author": "土豆",
            "price": "99"
        }
    ]
    

    users-fxm.json

    [
        {
            "name": "fxm",
            "password": "123456"
        }
    ]
    

    main.py

    #!/usr/bin/python3
    #  -*- coding: utf-8 -*-
    """
    图书管理系统
    1. 创建一个列表存储书籍信息,包括书名,作者名,价格
    2. 创建一个列表存储用户信息,包括用户名,密码
    3. 制作一个注册登录系统,登录后可以使用添加书籍,删除书籍,
    修改书籍信息,查询单本书籍信息,查询所有书籍信息等功能
    4. 图书信息、用户信息存入文件中 (新增)
    
    
    图书管理系统操作说明
    一、普通用户
        1.先注册
        2.登录到系统
        3.进行功能操作    (增、删、改、查书籍)
        4.退出系统
    二、管理者
        1.使用管理者账户登陆(fxm:123456)
        2.管理普通用户    (删、改、查用户)
        3.退出系统
    """
    
    import json
    import os
    
    # 本系统保存信息的文件名
    file_name_books = "books-fxm.json"
    file_name_users = "users-fxm.json"
    
    
    # 主菜单
    def menu():
        print('*' * 40)
        print('*' * 10, '欢迎来到图书管理系统 1.0 ')
        print('*' * 40)
        print('请选择:')
        print("1: 注册新用户:")
        print("2. 已有账户,登陆:")
        print("3. 退出本系统")
    
    
    # 用户小屋(功能页面)
    def user_menu(self):
        print('*' * 40)
        print('欢迎%s!   来到图书小屋' % self)
        print('请选择您所需的功能:')
        print('1. 添加书籍')
        print('2. 删除书籍')
        print('3. 修改书籍信息')
        print('4. 查询单本书籍信息')
        print('5. 查询所有书籍信息')
        print('6. 退出您的图书小屋')
    
    
    # 管理者页面
    def manger():
        print('*' * 40)
        print('欢迎本系统管理者!!!')
        print('*' * 40)
        print('请选择您所需的功能:')
        print('1. 删除一个用户')
        print('2. 修改用户密码')
        print('3. 查看一个用户信息')
        print('4. 查看全部用户信息')
        print('5. 退出管理者页面')
    
    
    # 删除用户
    def del_user():
        user_name = input('请输入要删除的用户名:')
        count = 0
        index = 0
        for i in users:
            if user_name == i['name']:
                count = 1
                del users[index]
                print('删除成功!!!')
            index += 1
        if count == 0:
            print('查无此人!!!')
    
    
    # 修改用户
    def edit_user():
        user_name = input('请输入要修改密码的用户名:')
        count = 0
        index = 0
        for i in users:
            if user_name == i['name']:
                count = 1
                del users[index]
                new_user_name = user_name
                new_user_password = input('请输入修改后的密码:')
                new_user = {'name': new_user_name, 'password': new_user_password}
                users.append(new_user)
                print('修改成功!!!')
            index += 1
        if count == 0:
            print('查无此人!!!')
    
    
    # 查看一个用户
    def look_user():
        user_name = input('请输入要查看的用户名:')
        count = 0
        print('用户名\t密码\t')
        for i in users:
            if user_name == i['name']:
                count = 1
                print('%s\t\t%s\t' % (i['name'], i['password']))
        if count == 0:
            print('查无此人!!!')
    
    
    # 查看全部用户
    def look_users():
        print('用户名\t密码\t')
        for i in users:
            print('%s\t\t%s\t' % (i['name'], i['password']))
    
    
    # 注册页面
    def sign_up():
        user_name = input("请输入您的用户名:")
        # 检验用户名是否重复
        for i in users:
            if user_name == i['name']:
                print("用户名已存在!!!")
                return
        user_password = input("请输入您的密码:")
        user = {'name': user_name, 'password': user_password}
        users.append(user)
        print("注册成功!!!")
    
    
    # 登陆页面
    def login():
        user_name = input("请输入您的用户名:")
        user_password = input("请输入您的密码:")
        count = 0
        for i in users:
            if user_name == i['name']:
                count = 1
                if user_password == i['password']:
                    print("登陆成功!!!")
                    return user_name
                else:
                    print("密码错误!!!")
                    print("请重试。")
        if count == 0:
            print("用户名不存在!!!")
            print("请重试。")
    
    
    # 添加书籍
    def add_book():
        book_name = input('请输入要添加书籍的名字:')
        # 检验书籍名是否重复
        for i in books:
            if book_name == i['name']:
                print("该书已存在!!!")
                return
        book_author = input('请输入要添加书籍的作者:')
        book_price = input('请输入要添加书籍的价格:')
        book = {'name': book_name, 'author': book_author, 'price': book_price}
        books.append(book)
        print('添加成功!!!')
    
    
    # 删除书籍
    def del_book():
        book_name = input('请输入要删除书籍的名字:')
        count = 0
        index = 0
        for i in books:
            if book_name == i['name']:
                count = 1
                del books[index]
                print('删除成功!!!')
            index += 1
        if count == 0:
            print('查无此书!!!')
    
    
    # 修改书籍
    def edit_book():
        book_name = input('请输入要修改书籍的名字:')
        count = 0
        index = 0
        for i in books:
            if book_name == i['name']:
                count = 1
                del books[index]
                new_book_name = input('请输入修改后书籍的名字:')
                new_book_author = input('请输入修改后书籍的作者:')
                new_book_price = input('请输入修改后书籍的价格:')
                new_book = {'name': new_book_name, 'author': new_book_author, 'price': new_book_price}
                books.append(new_book)
                print('修改成功!!!')
            index += 1
        if count == 0:
            print('查无此书!!!')
    
    
    # 查看一本书籍
    def look_book():
        book_name = input('请输入要查看书籍的名字:')
        count = 0
        print('书名\t\t作者\t价格\t')
        for i in books:
            if book_name == i['name']:
                count = 1
                print('%s\t%s\t%s\t' % (i['name'], i['author'], i['price']))
        if count == 0:
            print('查无此书!!!')
    
    
    # 查看全部书籍
    def look_books():
        print('书名\t\t作者\t价格\t')
        for i in books:
            print('[%s]\t%s\t%s\t' % (i['name'], i['author'], i['price']))
    
    
    # 初始状态读取文件
    def get_init_data():
        if (not os.path.exists(file_name_users)) | (not os.path.exists(file_name_books)):
            raise print("缺少必要文件:", file_name_books, file_name_users)
        with open(file_name_books, 'r', encoding='utf-8') as f:
            books_json = json.load(f)
        with open(file_name_users, 'r', encoding='utf-8') as f:
            users_json = json.load(f)
        return books_json, users_json
    
    
    # 结束程序更新数据文件
    def set_init_data():
        with open(file_name_books, 'w', encoding='utf-8') as f:
            f.write(json.dumps(books, ensure_ascii=False, indent=4))
        with open(file_name_users, 'w', encoding='utf-8') as f:
            f.write(json.dumps(users, ensure_ascii=False, indent=4))
    
    
    # 用户与管理者
    def while_user(name):
        while name:  # 根据是否登陆成功,进入用户菜单
    
            if name == 'fxm':  # 判断是否为管理者
                manger()  # 管理者页面
                manger_n = input()
                if manger_n == '1':
                    del_user()  # 删除一个用户
                elif manger_n == '2':
                    edit_user()  # 修改用户密码
                elif manger_n == '3':
                    look_user()  # 查看一个用户信息
                elif manger_n == '4':
                    look_users()  # 查看全部用户信息
                elif manger_n == '5':
                    break  # 退出管理者页面
                else:
                    print("非法输入!!!")
                    print("请再次选择:")
    
            else:
                user_menu(name)  # 普通用户页面
                user_n = input()
                if user_n == '1':
                    add_book()  # 添加书籍
                elif user_n == '2':
                    del_book()  # 删除书籍
                elif user_n == '3':
                    edit_book()  # 修改书籍信息
                elif user_n == '4':
                    look_book()  # 查询单本书籍信息
                elif user_n == '5':
                    look_books()  # 查询所有书籍信息
                elif user_n == '6':
                    break  # 退出普通用户页面
                else:
                    print("非法输入!!!")
                    print("请再次选择:")
    
    
    # 主函数
    def main():
        # 循环菜单主页面
        while True:
            menu()  # 主菜单页面
            menu_n = input()
            if menu_n == '1':
                sign_up()
            elif menu_n == '2':
                # 循环用户菜单页面
                name = login()  # 用户登陆后返回值name
    
                while_user(name)  # 用户与管理者
    
            elif menu_n == '3':
                set_init_data()
                break
            else:
                print("非法输入!!!")
                print("请再次选择:")
    
    
    if __name__ == '__main__':
        # 初始信息读取
        books, users = get_init_data()
        # 调用主函数
        main()
    
    展开全文
  • Python Django项目日志查询系统

    万次阅读 2020-08-07 18:06:11
    项目适合中小型公司日志查询工作。大型公司可以使用elk等。 日志查询系统 维护手册 作者:陈土锋 ...

    该项目适合中小型公司日志查询工作。大型公司可以使用elk等,elk还可以分析性能指标、数据分析等等,是一个很好的日志查询数据分析应用。但是每个公司都有自己的需求,如果我们只需要查日志,只要最原始的日志,那么这个系统最初的由来。

    该系统其实就是调用了absible命令去查日志,然后把输出的信息输到页面查看。
    本工具是本人从 0 - 1 全程开发的,还有很多地方需要优化。包括安全方面的。但由于种种原因本人无法继续优化了,后续也没有继续维护。

    所以该系统只适合部署到内网。否则极不安全,切记!!!!!

     项目由来:
    本人曾任职于一家移动外包公司,服务器用的是内网,出口有移动的防火墙,所以相对云服务器绝对的安全。内部组件基本都是内网通信。只有对外的web页面或者后台做了外网域名的端口映射。
    因为移动限制了研发登录内网机器查看日志,elk也是有的,但是接入麻烦,两头对接,降低效率的同时也得不到自己想要的日志。只有直接使用系统命令去查找才能看到最原始的日志,才方便问题排查。
    故开发了此组件,便于研发查找原始日志。虽然目前本人已离职,但据听说该组件还一直在使用,虽然已无人维护更新迭代,但足以支撑目前那个项目的使用。


    项目代码git地址:
    https://github.com/MYF12/logsquery3.0.git

    有问题可联系本人QQ:1016401546

                                           日志查询系统

                                                                              维护手册
                                                                             作者:陈土锋
                                                                          日期:2020年6月11日

    目录

    前言... 1

    一、系统底层逻辑说明... 2

    二、环境说明... 2

    三、系统搭建... 2

    3.1 安装Python3. 2

    3.1.1 安装依赖环境... 2

    3.1.2下载Python3. 3

    3.1.3 安装Python3. 3

    3.1.4 建立Python3和pip3的软链:. 3

    3.1.5 并将/usr/local/python3/bin加入PATH. 3

    3.2 安装虚拟环境... 4

    3.2.1 生产环境虚拟环境包路径:... 4

    3.2.2 先安装distlib-0.3.0.zip. 4

    3.2.3 创建虚拟环境... 5

    3.3 安装Django. 6

    3.4 测试项目是否正常运行... 7

    3.4.1 项目部署... 7

    3.4.2 项目测试... 8

    四、nginx+uwsgi+Django代理项目... 8

    4.1 安装uwsgi 8

    4.2 配置uwsgi 9

    4.3 启动uwsgi 10

    4.4 配置nginx 代理Django. 10

    五、Django3.0.7安装... 12

    前言

    1、该程序是根据xxxxxx目前系统管理层面开发而成,故仅适用于xxxxxx系统平台。
    2、该系统开发初心为减少运维协助研发查询线上生产日志、线上配置和线上其他环境而开发出来的。
    3、架构使用了Python3+Django+uwsgi+nginx 基础架构。
    4、底层调用ansible命令
     

    一、系统底层逻辑说明

    1.1 前端代码通过form表单提交用户交互信息到后端。
    1.2 后端接受到输入信息,经过逻辑处理之后调用服务器的ansible命令来执行远程命令。
    1.3 远程命令返回的结果,再通过文本格式展示到前端页面供用户查看。
    1.4 如果文本文件行数过多,则用户可以通过下载的连接下载到文本到本地查看查看。 
     

    二、环境说明

     
    2.1 服务器安装ansible命令(前提)
    2.2 ansible服务器必须能通过下面命令格式去执行远程命令:
    如:ansible slivr --sudo -m shell -a "ls -l "
    如果是root用户则在sudoer文件加入root用户sudo权限即可,这样无需修改代码。
    2.3 安装Python3
    2.4 安装虚拟环境
    2.5 安装Django 1.8 版本(最新版Django3.5需要改下代码的URL转发方式)
     

    三、系统搭建

    3.1 安装Python3

    3.1.1 安装依赖环境

    输入命令:yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

    3.1.2下载Python3

    1.进入opt文件目录下,cd opt/
    2.下载python3   (可以到官方先看最新版本多少)
    输入命令 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
     

    3.1.3 安装Python3

    安装在/usr/local/python3(具体安装位置看个人喜好)
    (1)创建目录:  mkdir -p /usr/local/python3
    (2)解压下载好的Python-3.x.x.tgz包(具体包名因你下载的Python具体版本不不同⽽而不不同,如:我下载的是Python3.7.1.那我这里就是Python-3.7.1.tgz)
    输入命令 tar -zxvf Python-3.7.1.tgz
    解压后出现python的文件夹
    进入解压后的目录,编译安装。(编译安装前需要安装编译器yum install gcc)
    (3)进入python文件夹,生成编译脚本(指定安装目录):
     cd Python-3.7.1
    ./configure --prefix=/usr/local/python3  
    #/usr/local/python3为上面步骤创建的目录
    (4)编译:make
    (5)编译成功后,编译安装:make install
    安装成功:
    (6)检查python3.7的编译器:/usr/local/python3/bin/python3.7

    3.1.4 建立Python3和pip3的软链:

    ln -s /usr/local/python3/bin/python3 /usr/bin/python3
    ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

    3.1.5 并将/usr/local/python3/bin加入PATH

    (1)vim /etc/profile
    (2)按“I”,然后贴上下面内容:

    # vim ~/.bash_profile
    # .bash_profile
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi
    # User specific environment and startup programs
    PATH=$PATH:$HOME/bin:/usr/local/python3/bin
    export PATH
    source ~/.bash_profile

    3.2 安装虚拟环境

    3.2.1 生产环境虚拟环境包路径:/xxxx/xxxx/

    使用pip3下载下面命令:

    vim requirements.txt
    appdirs==1.4.3
    distlib==0.3.0
    filelock==3.0.12
    importlib-metadata==1.6.0
    importlib-resources==1.4.0
    pbr==5.4.5
    setuptools==39.0.1
    six==1.14.0
    stevedore==1.32.0
    virtualenv==20.0.18
    virtualenv-clone==0.5.4
    virtualenvwrapper==4.8.2
    zipp==3.1.0
    #下载
    pip3 download requirements.txt

    下载完之后可以看到下面这些包:

    appdirs-1.4.3-py2.py3-none-any.whl
    distlib-0.3.0.zip
    filelock-3.0.12-py3-none-any.whl
    importlib_metadata-1.6.0-py2.py3-none-any.whl
    importlib_resources-1.4.0-py2.py3-none-any.whl
    pbr-5.4.5-py2.py3-none-any.whl
    six-1.14.0-py2.py3-none-any.whl
    stevedore-1.32.0-py2.py3-none-any.whl
    virtualenv-20.0.18-py2.py3-none-any.whl
    virtualenv_clone-0.5.4-py2.py3-none-any.whl
    virtualenvwrapper-4.8.2-py2.py3-none-any.whl
    zipp-3.1.0-py3-none-any.whl

    3.2.2 先安装distlib-0.3.0.zip

    unzip distlib-0.3.0.zip
    cd distlib-0.3.0
    python3 setup.py build
    python3 setup.py install
    再安装所有的whl包:
    pip3 install *.whl

    3.2.3 配置环境

    mkdir /root/.virtualenvs
    #用locate virtualenvwrapper.sh 找出这个文件的路径,一般在安装的python3 bin目录下
    vim ~/.bashrc 
    export WORKON_HOME=/root/.virtualenvs 
    #加载环境
    source /usr/local/python3/bin/virtualenvwrapper.sh

    vim  /usr/local/python3/bin/virtualenvwrapper.sh
    找到VIRTUALENVWRAPPER_PYTHON关键字,在下面的if上面添加红色代码,python路径要对。

    VIRTUALENVWRAPPER_PYTHON=/usr/local/python3/bin/python3
    if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
    then
    source ~/.bashrc

    做virtualenv命令软连接:否则后续创建虚拟环境会报错

    ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

    [root@ansible-server2 dwlirui2]# pip3 list --可以看到已经安装了下面的包
    Package Version
    ------------------- -------
    appdirs 1.4.3
    distlib 0.3.0
    filelock 3.0.12
    importlib-metadata 1.6.0
    importlib-resources 1.4.0
    pbr 5.4.5
    pip 20.0.2
    setuptools 39.0.1
    six 1.14.0
    stevedore 1.32.0
    virtualenv 20.0.18
    virtualenv-clone 0.5.4
    virtualenvwrapper 4.8.2
    zipp 3.1.0

    3.2.3 创建虚拟环境

    [root@ansible-server2 dwlirui2]# mkvirtualenv -p python3 env1

    创建成功之后你会默认进入虚拟环境,如创建env1:

    [root@ansible-server2 dwlirui2]# mkvirtualenv -p python3 env1
    created virtual environment CPython3.6.5.final.0-64 in 1210ms
      creator CPython3Posix(dest=/root/.virtualenvs/env3, clear=False, global=False)
      seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/root/.local/share/virtualenv/seed-app-data/v1.0.1)
      activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
    virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/predeactivate
    virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/postdeactivate
    virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/preactivate
    virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/postactivate
    virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/get_env_details

    可以看到你已经进入虚拟环境env1,这个虚拟环境里面安装的软件和外面环境分开的

    (env1) [root@ansible-server2 dwlirui2]#

    3.3 安装Django

    通过旧的虚拟环境导出来的包:存放到requirements.txt文件里面。
    旧环境登陆虚拟环境执行导出命令:pip3 freeze >requirements.txt

    cat requirements.txt --下载如下包
    certifi==2020.4.5.1
    chardet==3.0.4
    Django==1.8.2
    idna==2.9
    requests==2.23.0
    urllib3==1.25.8

    然后找一台测试环境能联网的机器下载这些包:

    [root@vm44 django_instaa]# pip3 download -r requirements.txt
    [root@vm44 django_instaa]# ls --总共下载了下面这么多包
    backcall-0.1.0.tar.gz idna-2.9-py2.py3-none-any.whl
    backcall-0.1.0.zip requests-2.23.0-py2.py3-none-any.whl
    certifi-2020.4.5.1-py2.py3-none-any.whl requirements.txt
    chardet-3.0.4-py2.py3-none-any.whl
    distlib-0.3.0.zip urllib3-1.25.8-py2.py3-none-any.whl
    Django-1.8.2-py2.py3-none-any.whl

    scp * root@xx.xx.xx.xx:/data/python_install/django_install --把包传到远程离线服务器
    离线服务器登陆虚拟环境
    workon env1 --以下命令均在虚拟环境执行
    cd /data/python_install/django_install
    离线虚拟环境先安装:backcall-0.1.0.zip,distlib-0.3.0.zip
    以安装backcall-0.1.0.zip为例:

    unzip backcall-0.1.0.zip
    cd backcall-0.1.0
    python3 setup.py build
    python3 setup.py install
    再安装所有的whl包:
    pip3 install *.whl

    安装完了之后,确定是否存在下面这些包:

    [root@ansible-server2 logs]# workon  env1
     (env1) [root@ansible-server2 logs]# pip list
    Package    Version  
    ---------- ----------
    backcall   0.1.0    
    certifi    2020.4.5.1
    chardet    3.0.4    
    distlib    0.3.0    
    Django     1.8.2    
    idna       2.9      
    pip        20.0.2   
    requests   2.23.0   
    setuptools 46.1.3   
    urllib3    1.25.8   
    uWSGI      2.0.18   
    wheel      0.34.2 
    

    3.4 测试项目是否正常运行

    我是通过虚拟环境搭建这个的,nginx安装到服务器上面,uwsgi和Django部署到虚拟环境上面。uwsgi和Django在虚拟环境启动。nginx 在服务器层面启动。
    项目代码已经备份到xx.xx.xx.xx:/share/logs_bak/xx.xx.xx.xx/ logsquerybak/logsquery.20200601.tar.gz

    3.4.1 项目部署

    我的Django项目部署情况:
    部署路径:
    /biao/hly_yw_project/
    即将logsquery.20200601.tar.gz 直接解压到/biao/hly_yw_project 目录。
    manage.py 文件路径:/biao/hly_yw_project/logsquery/manage.py
    wsgi.py 文件路径:/biao/hly_yw_project/logsquery/logsquery/wsgi.py
    settings.py 文件路径:/biao/hly_yw_project/logsquery/logsquery/settings.py
    查询出来的文件放到这里:
    /biao/hly_yw_project/logsquery/queryapp/static/files/
    目前只保留7天的文件:

    0 2 * * * find /biao/hly_yw_project/logsquery/queryapp/static/files -name "*.txt" -mtime +7 -type f |xargs rm -f
    

    项目结构是这样的:

    3.4.2 项目测试

    1、确保Django项目能够正常运行,即能够用Python3 manage.py runserver 0.0.0.0:8000 运行。

    (env1) [root@ansible-server2 logs]# cd /biao/hly_yw_project/logsquery/
    (env1) [root@ansible-server2 logs]# Python3 manage.py runserver 0.0.0.0:8000
    

    用浏览器访问ip:8000看下能否正常访问下面页面。

    四、nginx+uwsgi+Django代理项目

    4.1 安装uwsgi

    uwsgi是wsgi协议的实现服务。
    我是离线安装的。
    下载 uwsgi-2.0.18.tar.gz
    可以找一台能够联网的服务器通过pip download 命令来下载,传到离线服务器上面。
    解压安装:(在虚拟环境里面安装)

    workon env1
    tar zxf uwsgi-2.0.18.tar.gz
    cd uwsgi-2.0.18
    python3 setup.py build
    python3 setup.py install
    pip list 查看是否安装成功
    uWSGI 2.0.18

    4.2 配置uwsgi

    mkdir /etc/uwsgi_conf/
    cat /etc/uwsgi_conf/uwsgi.ini
    
    # uwsig使用配置文件启动
    [uwsgi]
    # 项目所在的根目录
    chdir=/biao/hly_yw_project/logsquery
    # 指定项目的application,区别于启动命令--wsgi-filemysite/wsgi.py
    #logsquery自己应用的名字
    module=logsquery.wsgi:application
    #the local unix socket file than commnuincate to Nginx
    # 指定sock的文件路径,这个sock文件会在nginx的uwsgi_pass配置,用来nginx与uwsgi通信
    # 支持ip+port模式以及socket file模式
    #socket=/etc/uwsgi_conf/uwsgi.sock
    socket=127.0.0.1:9050
    # 进程个数
    processes = 8
    # 每个进程worker数
    workers=5
    procname-prefix-spaced=queryapp # uwsgi的进程名称前缀
    py-autoreload=1 # py文件修改,自动加载
    # 指定IP端口,web访问入口
    http=0.0.0.0:9051
    # 启动uwsgi的用户名和用户组
    uid=root
    gid=root
    # 启用主进程
    master=true
    # 自动移除unix Socket和pid文件当服务停止的时候
    vacuum=true
    # 序列化接受的内容,如果可能的话
    thunder-lock=true
    # 启用线程
    enable-threads=true
    # 设置一个超时,用于中断那些超过服务器请求上限的额外请求
    harakiri=30
    # 设置缓冲
    post-buffering=4096
    # 设置日志目录
    daemonize=/var/log/uwsgi_conf/uwsgi.log
    # uWSGI进程号存放
    pidfile=/etc/uwsgi_conf/uwsgi.pid
    #monitor uwsgi status 通过该端口可以监控 uwsgi 的负载情况
    # 支持ip+port模式以及socket file模式
    # stats=%(chdir)/uwsgi_conf/uwsgi.status

    4.3 启动uwsgi

    cd /etc/uwsgi_conf/
    uwsgi --ini uwsgi.ini
    停止:
    uwsgi --stop uwsgi.pid

    4.4 配置nginx 代理Django

    nginx添加一个server:  

    server {
                listen       8000;
                server_name  xxxxxx;
                #注释下面配置,同时支持https和http访问
                #ssl on;
                #access_log  off;
                access_log /var/log/nginx/nginx.log;
                error_log /var/log/nginx/nginx.log;
                charset utf-8;
                client_max_body_size 100M;
                location /static{
                        alias /biao/hly_yw_project/logsquery/queryapp/static;
                }
                location /  {
                        include  /etc/nginx/uwsgi_params;
                        uwsgi_pass 0.0.0.0:9050;
                        proxy_read_timeout 3600s;
                        proxy_send_timeout 3600s;
                        uwsgi_read_timeout 600;
                        uwsgi_send_timeout 600;
                        uwsgi_connect_timeout 600;
                }
                error_page   500 502 503 504  /50x.html;
                location = /50x.html {
                    root   html;
                }
                #使用497状态重写到http上面
            }

    重启nginx或者重载nginx
    nginx -s reload
    页面访问:
    http://ip:8000即可访问Django项目

    五、Django3.0.7安装

    因1.8.2版本有漏洞,需要升级到最新版。最新版有些模块不兼容,代码也有些地方相对1.8.2的有改动。
    Django3.0的需要用这个包:
    xx.xx.x.xx: /biao/hly_yw_project/logsquery.django3.0.7.tar.gz
    其他应用安装方式不变,安装Django3.0.7方式。
    安装包备份目录:
    xx.x.xx.xx: /usr/local/vvm/logs/django
    xx.xx.xx.xx:/share/logs_bak/xx.xx.xx.xx/django
    进入虚拟环境:
    workon env1
    #解压
    tar zxf django3.0.tar.gz
    #安装
    pip install *whl
    其他配置参考1.8.2的

    展开全文
  • 自己写简易的python银行管理系统,使用python3.6完成,还不是很完善,不过功能都均可实现
  • 主要为大家详细介绍了python实现图书管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • python3.0名片管理系统

    2018-10-08 18:09:29
    利用python语言编写的名片管理系统 包含添加名片信息 删除,注册等 包含exe可执行文件
  • 大学期间写的一份Python学生信息管理系统,使用的是文件存储的格式,但是没有学习数据库之类的东西,只能这样写了。代码包含:教师端学生端的登录,学生基本信息的增删改查等四项基本功能。教师端功能全,学生端把...
  • python实现学员管理系统这个小程序是我刚刚接触python时,导师带着做的第一个小项目。通过这次练习,我学会了很多东西。下面是具体的代码和要求 ”’ 学员管理系统1.0版本 1.添加学员  1.1 输入要添加的学员  1.2 ...
  • python学生管理系统.zip

    2020-01-10 15:14:51
    python为基础的学生管理系统,运用tkinter打造的高端大气上档次的界面,操作简单,功能齐全,是练习的不二选择。 内含三个角色:学生,教师,管理员。 包括三张表:学生信息表,教师信息表,成绩表。 富含多个...
  • Python基础项目:超市商品销售管理系统

    万次阅读 多人点赞 2019-04-18 12:01:54
    主要以项目为中心介绍了相关知识点,通过手机通讯录管理系统和学生信息管理系统案例的学习,应该掌握了Python当中的基础语法,变量语句函数以及常见数据结构列表与字典的基本操作,通过世界杯查询系统与模拟群聊实战...
  • Python学生管理系统(web网页版)

    热门讨论 2018-11-02 11:28:27
    Python学生管理系统(web网页版),前面发布了python的控制台版本的学生管理系统和使用tkinter界面版的学生管理系统,这次是使用Django开发基于学生的实体类的增删改查,里面包含项目演示录屏和完整的项目源码与...
  • 本文实例为大家分享了Python实现GUI学生信息管理系统的具体代码,供大家参考,具体内容如下项目环境:软件环境:OS:RedHat6.3Lib:PygtkLanguage:PythonSupport tool:Glade3项目简述:①Glade3设计用户的登录窗口,...
  • Python GUI项目:文件夹管理系统

    千次阅读 2019-04-24 09:45:08
    文件夹管理系统,顾名思义是对于文件夹内部内容的管理和展示。在手机和电脑应用中使用广泛。在移动手机中,某个应用需要查找手机存储资料,会嵌入文件夹管理的功能,比如本地阅读器。电脑应用中,也经常用到这个功能...
  • 这个项目本来是给部门里小干事布置的课设任务(题目基本上是根据自己的想法出的),当时自己正好在学Python,就想拿这个项目练练手,于是就有了这个基于Python面向对象实现的停车场管理系统。 原来这个项目都是自己...
  • 本套课程为Python基础篇的第6套...配之海量课堂练习/课后作业的大量讲解,以及刘老师风趣幽默的课堂幽默感染力,让你轻松加愉悦的心情下开启Python系统学习之旅,系统与深入掌握当今最为火热的人工智能御用编程语言!
  • python简单的学生信息管理系统-文件版)功能如下主函数部分增加学生信息修改学生信息删除学生信息查询学生显示所有学生的信息将数据录入文件读取文件数据 学了一段时间的python后,自己动手做了一个函数版-简单的...
  • 面向初级开发一套含有角色,权限,内容为一体的学员管理,抛弃传统的每个页面繁琐的增删改查,开发公共组件,使得开发者根据配置文件即可... 【注:本节课可在学完《python项目之学员CRM管理系统开发阶段一》后学习】
  • dictandfile.pypython实战python简单实现学生管理系统项目要求:(1)显示所有... 其他:project interpreter 部分是选择新建项目所依赖的 python 库,第一个选项会在项目中建立一个 venv(virtualenv)目录,这里存放...
  • 主要为大家详细介绍了Python如何实现简易版图书管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 本文是基于上一篇(python项目:学生信息管理系统(初版) )进行了完善,并添加了新的功能。 主要包括有: 完善部分:输入错误;无数据查询等异常错误 新的功能:文件的操作:文件的读写,其中重点是对文本字符串的...
  • https://blog.csdn.net/u012156341/article/details/89486070 本篇博客相关代码下载
  • 项目管理系统 使用Python和Django构建。 特征 创建公司和用户的界面 创建项目,任务,更新信息 用户,任务和项目的视图 登录和注销,创建个人资料,更新个人资料图片 与其他发送友好请求的用户互动,添加和删除朋友 ...
  • 项目要求: 运行时显示如下界面 输入序号进行对应操作 要求具备增、删、改、查四项功能,并且将用户数据存到txt文件中永久存储 在本案例中我们可以应用函数的思想以及模块化思想 将各个功能封装成函数,并将函数与...
  • Python项目部实战-打造自己的信息管理系统-(1) 信息管理系统登陆及注册 加载json文件 import json 判断用户是否存在,不存在就构建用户 def register_user(): name_user=input("构建用户名:") try...
  • 基于tkinter库txt文件操作的Python界面化图书管理系统

    千次阅读 热门讨论 2020-02-17 16:20:47
    该系统主要通过tkinter库实现图书管理系统,该项目包含对文件的操作,对字符串解析的python知识点 二、系统实现功能介绍及使用方法 1、登录功能: 不同用户通过输入账号、密码再点击按钮选择登录的方式,进入对应的...
  • Java健身管理系统源码詹金斯python模板 使用这些文件在你的 Python 项目中搭建你的持续集成服务器。 这是受到 Sebastian Bergmann () 的启发。 要求 在您的 jenkins 实例上,您必须安装一些 QA python 工具: $ ...
  • 人生苦短,我用Python,咱们今天就来分享一个用Python语言开发的基于Django框架的图书管理系统吧。项目前台和后台界面模板都是自己编写,前台采用Bootstrap框架UI,后台EasyUI框架UI,没有采用Django自动生成的那个...
  • 面向初级开发一套含有角色,权限,内容为一体的学员管理,抛弃传统的每个页面繁琐的增删改查,开发公共组件,使得开发者根据配置文件即可完成复杂的搜索以及增删改查。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 140,521
精华内容 56,208
关键字:

python文件管理系统项目

python 订阅