精华内容
下载资源
问答
  • 有人提问:用 python 进行办公自动化都需要学习什么知识呢?这可能是很多非 IT 职场人士面临的困惑,想把 python 用到工作中,却不知如何下手? python自动化办公领域越来越受欢迎,批量处理简直是加班族的福音。...

    有人提问:用 python 进行办公自动化都需要学习什么知识呢?

    这可能是很多非 IT 职场人士面临的困惑,想把 python 用到工作中,却不知如何下手? python 在自动化办公领域越来越受欢迎,批量处理简直是加班族的福音。

    自动化办公无非是 excel、ppt、word、邮件、文件处理、数据分析处理、爬虫这些,这次我就来理一理 python 自动化办公的那些知识点。python 基础

    excel 自动化

    ppt 自动化

    word 自动化

    邮件处理

    文件批量处理

    数据处理与分析

    自动化爬虫

    具体也可以看我的相关Live

    下面一一详解。

    python 基础

    能做这些的前提是会使用 Python,最起码要熟悉基本语法,可以编写小脚本。

    对于 python 语法的要求,你可以对照 python 基础教程的部分查看需要学那些,找个免费视频教程跟着学,然后多敲代码练习。如果习惯看书的话,可以买本 python 入门书备查。

    语法主要内容基本数据类型:不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)

    可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)运算符:算术运算符、逻辑运算符、赋值运算符、比较运算符、位运算符...

    数值类型:整型(Int)、浮点型(float)、复数(complex)

    条件控制语句:if...elif...else 语句

    循环语句:while 语句、for 语句

    函数:def 定义函数、函数调用、参数传递、匿名函数...

    迭代:迭代过程、迭代器、生成器、生成器表达式

    文件操作:open()函数、read、readline、readlines、write...方法

    os 模块:处理系统文件和目录

    模块:模块导入、常用标准模块、常用第三方库

    错误和异常:try/except 语句

    面向对象:简单掌握面向对象概念即可

    之前整理的 python 基础语法核心部分,仅供参考:

    语法是关键,一定要理解 python 编程的基本概念,再去学其他的工具库。

    不然会很痛苦的。

    excel 自动化

    office 家族其实都可以用 VBA 解决自动化的问题,但可能很多人不会用。

    python 针对 excel 有很多的第三方库可以用,比如 xlwings、xlsxwriter、xlrd、xlwt、pandas、xlsxwriter、win32com、xlutils 等等。

    这些库可以很方便地实现对 excel 文件的增删改写、格式修改等,当然并不推荐你全部都去尝试一下,这样时间成本太大了。使用 xlwings 和 pandas 这两个就够了,基本能解决 excel 自动化的所有问题。

    xlwing 不光可以读写 excel,还能进行格式调整、VBA 操作,非常强大且易于使用。

    之前写过一个 xlwings 的入门教程:

    当然最好是看官网教程:

    pandas 是大家都熟悉的数据处理利器,它也支持 excel 的读写,接口友好。这个后面会讲到。

    如果你对 python 自动化处理 excel 很有兴趣,也可以买一本专门的教材来看。

    ppt 自动化

    python 当然是支持 ppt 的自动化处理,主要的库有 pywin32com、pptx,可以创建、修改 ppt 文件。

    推荐使用 pptx 库,目前主流的 ppt 处理库。

    word 自动化

    python 操作 Word 的库:python-docx、import docx:只对 windows 平台有效

    pypiwin32、import win32com:跨平台,但无法处理 doc 格式的 word 文本,doc 格式不是基于 xml 的

    textract、import textract:它同时兼顾“doc”和“docx”,但安装过程需要一些依赖。 你可以批量的用 python 生成 word 文件,推荐使用 docx,不需要会太多。

    邮件处理

    python 处理邮件也是极其便利的,smtplib、imaplib、email 三个库配合使用,实现邮件编写、发送、接收、读取等一系列自动化操作,省时省力。

    看了其他很多教程都有各种各样的问题,需要不断改 bug,所以这个大家先可以跑跑上面的代码。

    文件批量处理

    文件处理包括批量修改或创建文件名、批量生成文档、批量修改路径等等重复性操作。如果一个个手工操作,那真的心累。

    python 在处理批量操作有得天独厚的优势,成千上万的文件修改可能只需几秒的时间。

    os 是 python 文件操作的库,可以实现对电脑上文件的增删改查。

    方法作用os.chdir(path)改变当前工作目录os.getcwd()返回当前工作目录os.listdir()返回 path 指定的文件夹包含的文件或文件夹的名字的列表os.makedirs(path[, mode])创建一个名为 path 的文件夹os.remove(path)删除路径为 path 的文件......

    数据处理和分析

    我就是做数据分析工作的,基本也是 python 作为主要工具,所以这一块毋庸置疑是 python 自动化办公最有价值的部分。

    数据处理的库主要有:pandas、numpy、matplotlib、sklearn...

    pandas 是一款不断进步的 python 数据科学库,它的数据结构十分适合做数据处理,并且 pandas 纳入了大量分析函数方法,以及常用统计学模型、可视化处理。

    如果你使用 python 做数据分析,在数据预处理的过程,几乎九成的工作需要使用 pandas 完成。

    在一些企业招分析师的笔试题中,pandas 已经作为必考的工具,所以如果你想要入行数据分析师,请努力学习使用 pandas。

    numpy 是 python 的数值计算库,包括 pandas 之类的很多分析库都建立在 numpy 基础上。

    numpy 的核心功能包括:ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组

    用于对整组数据进行快速运算的标准数学函数(无需编写循环)

    用于读写磁盘数据的工具以及用于操作内存映射文件的工具

    线性代数、随机数生成以及傅里叶变换功能

    用于集成由 C、C++、Fortran 等语言编写的代码的 A C API

    numpy 之于数值计算特别重要是因为它可以高效处理大数组的数据。这是因为:比起 Python 的内置序列,numpy 数组使用的内存更少

    numpy 可以在整个数组上执行复杂的计算,而不需要 Python 的 for 循环

    matplotlib 和 seaborn 是 python 主要的可视化工具,建议大家都去学学,数据的展现和数据分析同样重要。

    sklearn 和 keras,sklearn 是 python 机器学库,涵盖了大部分机器学习模型。keras 是深度学习库,它包含高效的数值库 Theano 和 TensorFlow。

    这些是大家耳熟能详的神库,非常推荐去学习。

    之前写过很多关于 python 数据分析处理的回答和文章,这里不再啰嗦了。

    自动化爬虫

    相信爬虫是大家最感兴趣的,python 爬虫有很多的实现库,比如:urllib、requests、scrapy 等,以及 xpath、beautifulsoup 等解析库。

    爬虫入门容易,但学精难,所以初学者可以尝试写点简单的爬虫,比如豆瓣、知乎、微博呀。

    其它

    其它不常用的自动化办公库,像处理 pdf、图片、视音频等,这里不做过多介绍。

    如果有兴趣可以在本文末留言,你用过哪些逆天的 python 库,解决了哪些问题?

    展开全文
  • ztf框架之 --单元测试用例执行结果上传至禅道 ...2.到脚本目录下执行脚本 # 以下是简单的示例脚本 import pytest def test_01(): print("hello world") a = 1 assert a == 1 执行脚本的命令:

    ztf框架之 --单元测试用例执行结果上传至禅道

    1.设置ztf框架参数

    ztf.exe set --------(设置ztf框架参数)

    禅道地址 http://127.0.0.1/zentao/

    设置禅道账号密码: admin Wangshihao

    2.到脚本目录下执行脚本

    # 以下是简单的示例脚本
    import pytest
    
    def test_01():
        print("hello world")
        a = 1
        assert a == 1
    
    

    执行脚本的命令: ztf.exe pytest -p 1 pytest --junitxml=testresult.xml

    --------(以上命令是将结果提交到指定产品的单元测试用例结果)

    3.执行脚本成功返回禅道查看提交的成果,点击用例,选择单元测试,查看,结果上传成功

    ztf框架之 – 功能用例自动化上传禅道运行结果

    1.导出用例 ztf.exe co

    参数:( 选择用例来源 : 产品 输入产品id 输入模块id(没有则忽略) 其他参数可默认可自己选择, 脚本语言选择python)

    2.导出完成后,在自己创建的目录下面编写用例脚本 脚本格式如下:

    '''
    [case]
    
    title=测试中文标题
    cid=14
    pid=1
    [group]
      1. step1 >> hello
      2. step2 >> 13905120512
      3. step3 >> abc123
    
    [esac]
    '''
    # 访问'demo\python'获取更多帮助  示例脚本中的每一个print对应一个步骤的结果
    
    print(">> hello")
    print(">> 13905120513")
    print(">> abc123")
    
    

    3.编写完成输入 ztf.exe run product1 product1\all.cs 执行用例

    4 将输出结果导入禅道 ztf.exe cr log\00*

    此文档若有看不明白的地方,欢迎留言咨询,互相交流

    展开全文
  • 一、安装sconsLinux环境(以CentOS为例)1、yum安装yum install scons2、源码安装安装scons:python setup.py install二、scons常用命令scons -c : 可以清除生成的临时文件和目标文件,相当于执行make clean。...

    这段时间用到了scons,这里总结下,也方便我以后查阅。

    一、安装sconsLinux环境(以CentOS为例)

    1、yum安装

    yum install scons

    2、源码安装

    安装scons:python setup.py install

    二、scons常用命令

    scons -c : 可以清除生成的临时文件和目标文件,相当于执行make clean。

    scons -Q : 将产生更少的输出信息。

    三、scons使用示例

    1、编译可执行文件

    使用Program函数进行可执行文件的编译。

    1.1 单文件方式

    1.1.1 编写程序代码

    建立文件test.c,内容如下:

    #include

    int main()

    {

    printf("Just a test!\n");

    return 0;

    }

    1.1.2 编写SConstruct代码

    内容如下:

    Program("test1.c")

    1.1.3 编译程序

    执行scons命令进行编译,效果如下:

    201531092702869.png?201521092710

    1.2 多文件方式

    1.2.1 编写程序代码

    test1.h文件:

    #include

    void fun11();

    test1.c文件:

    #include "test1.h"

    void fun11()

    {

    printf("fun11\n");

    }

    test2.c文件:

    #include "test1.h"

    int main()

    {

    fun11();

    return 0;

    }

    1.2.2 编写SConstruct代码

    内容如下:

    Program('test', ['test1.c','test2.c'])

    或者:

    Program('test',Glob('*.c'))

    1.2.3 编译程序

    执行scons命令进行编译。

    1.3 依赖

    1.3.1 链接库

    语法示例如下:

    Program('test', ['test1.cpp'],LIBS=['boost_system','boost_thread-mt'], LIBPATH='/usr/lib64')

    1.3.2 包含库

    语法示例如下:

    Program('program',Glob('*.c'),CPPPATH='/home/admin/inc')

    2、编译静态库

    语法示例如下:

    Library('libtest1',['test1.c'])

    3、编译动态库

    语法示例如下:

    SharedLibrary('libtest1',['test1.c'])

    三、其它

    参考资料

    展开全文
  • 实验环境1.shell 脚本:linux centos 7 系统2.Python shell 脚本:window 系统3.其他:python selenium 模块,谷歌浏览器, 谷歌浏览器驱动。4.discuz 链接:https://pan.baidu.com/s/1vOwN_f56wJlIzauGrFoR1Q提取码...

    实验环境

    1.shell 脚本:linux centos 7 系统

    2.Python shell 脚本:window 系统

    3.其他:python selenium 模块,谷歌浏览器, 谷歌浏览器驱动。

    4.discuz 链接:https://pan.baidu.com/s/1vOwN_f56wJlIzauGrFoR1Q

    提取码:mijf

    实验步骤

    1.上传discuz包到Linux系统/opt目录下

    方法一:挂载 方法二:通过Xftp软件上传

    3.编写脚本lnmp.sh

    vim lnmp.sh

    #!/bin/bash

    #this is auto install lamp or lnmp shell!

    #apache安装

    apache()

    {

    #apache编译安装

    cd /opt/httpd-2.4.29 &&./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi &&make && make install &&cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

    #

    #修改配置文件

    #在/etc/init.d/httpd文件中第二行插入2段

    sed -i "2i#chkconfig: 35 85 21 \n\

    #description: Apache is a World Wide Web server." /etc/init.d/httpd

    #将Listen 80 替换成 Listen $ip:80 ,$ip为变量,是本机ip地址(特别注意变量的替换方法)

    sed -i "s/^Listen 80/Listen $ip:80/g" /usr/local/httpd/conf/httpd.conf

    #

    #优化服务

    ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd ;ln -s /usr/local/httpd/bin/* /usr/local/bin/

    chkconfig --add httpd

    systemctl daemon-reload

    systemctl start httpd

    #

    #检查端口和网页测试

    port=`netstat -anpt | grep httpd | wc -l`

    if [ $? -eq 0 ] && [ $port -ne 0 ]; then

    echo -e "\033\t\t\t[44;32m test http://$ip \033[0m"

    read -p "input result:(y/n) " u

    if [ $u == "y" ]; then

    echo -e "\033\t\t\t[32m apache install success!\033[0m"

    else

    echo -e "\033\t\t\t[5;31m apache install fail!\033[0m"

    fi

    else

    #"-e" 为转义,\033为固定格式(同 \e),"/t"为制表位,同tab键,"5"为闪烁,31m为字体颜色,此处红色,"\033[0m "为固定结束格式

    echo -e "\033\t\t\t[5;31m apache install fail,check!!\033[0m"

    exit 0

    fi

    }

    #

    #安装nginx

    nginxt()

    {

    #编译安装

    useradd -M -s /sbin/nologin nginx

    cd /opt/nginx-1.12.0/

    ./configure \

    --prefix=/usr/local/nginx \

    --user=nginx \

    --group=nginx \

    --with-http_stub_status_module

    make && make install

    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ;nginx &&nginx -t;

    #检查服务启动

    stat=`netstat -ntap | grep "80" | wc -l`

    if [ $? -eq 0 ]&&[ $stat -ne 0 ] ;then

    echo -e "\033\t\t\t[32m nginx install success!!\033[0m"

    else

    echo -e "\033\t\t\t[5;31m nginx install fail!!\033[0m"

    exit 0

    fi

    }

    #

    #mysql安装

    mysql_con()

    {

    #编译安装

    #判断有无/usr/local/mysql目录,没有就创建

    [ ! -d /usr/local/mysql ] && mkdir -p /usr/local/mysql

    /usr/sbin/useradd -s /sbin/nologin mysql

    cd /opt/mysql-5.5.24

    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

    -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \

    -DDEFAULT_CHARSET=utf8 \

    -DDEFAULT_COLLATION=utf8_general_ci \

    -DWITH_EXTRA_CHARSETS=all \

    -DWITH_MYISAM_STORAGE_ENGINE=1 \

    -DWITH_INNOBASE_STORAGE_ENGINE=1 \

    -DWITH_MEMORY_STORAGE_ENGINE=1 \

    -DWITH_READLINE=1 \

    -DENABLED_LOCAL_INFILE=1 \

    -DMYSQL_DATADIR=/home/mysql \

    -DMYSQL_USER=mysql \

    -DMYSQL_TCP_PORT=3306

    if [ $? -eq 0 ];then

    make && make install

    #

    #修改配置文件

    echo "export PATH=$PATH:/usr/local/mysql/bin/ " >> /etc/profile

    source /etc/profile && chown -R mysql:mysql /usr/local/mysql &&cd /usr/local/mysql/support-files &&cp my-medium.cnf /etc/my.cnf &&cp mysql.server /etc/init.d/mysqld &&chmod 755 /etc/init.d/mysqld &&chkconfig --add /etc/init.d/mysqld ;

    chkconfig mysqld --level 35 on

    else

    echo -e "\e\t\t\t[5;31m set error,check ![0m"

    exit 1

    fi

    #初始化数据库

    /usr/local/mysql/scripts/mysql_install_db \

    --user=mysql \

    --ldata=/var/lib/mysql \

    --basedir=/usr/local/mysql \

    --datadir=/home/mysql

    ln -s /usr/local/mysql/bin//usr/local/bin/

    #

    #搜索basedir=,datadir=,并替换

    sed -i 's#^basedir=.$#basedir=/usr/local/mysql#' /etc/init.d/mysqld

    sed -i 's#^datadir=.*$#datadir=/home/mysql#' /etc/init.d/mysqld

    #mysql启动和检查

    systemctl daemon-reload && systemctl start mysqld

    port=`netstat -ntap | grep mysql |wc -l`

    if [ $? -eq 0 ]&&[ $port -ne 0 ];then

    echo -e "\033\t\t\t[32m mysql install success!! \033[0m"

    else

    echo -e "\033\t\t\t[5;31m mysql install fail,check!! \033[0m"

    exit 0

    fi

    }

    #

    #apache-php安装

    apa_php()

    {

    #php编译安装

    cd /opt/php-5.6.11

    ./configure \

    --prefix=/usr/local/php5 \

    --with-gd \

    --with-zlib \

    --with-apxs2=/usr/local/httpd/bin/apxs \

    --with-mysql=/usr/local/mysql \

    --with-config-file-path=/usr/local/php5 \

    --enable-mbstring

    make && make install &&cp php.ini-development /usr/local/php5/php.ini && ln -s /usr/local/php5/bin/ /usr/local/bin/ ; ln -s /usr/local/php5/sbin/ /usr/local/sbin/ ;

    useradd -M -s /sbin/nologin php

    #检查httpd.conf文件中是否有php5_module,并统计

    num=`cat /usr/local/httpd/conf/httpd.conf | grep "php5_module" | wc -l`

    #判断是否有php5_module

    if [ $num -eq 0 ] ;then

    echo -e "\e\t\t\t[5;31m no php5_module, check! \e[0m"

    exit 0

    else

    echo -e "\e\t\t\t[32m php5_module is exist! \e[0m"

    fi

    #

    #修改httpd配置,测试php

    #在第258行行尾加index.php

    sed -i '258s/$/ index.php/' /usr/local/httpd/conf/httpd.conf

    #在383行插入相关文件

    sed -i "383iAddType application/x-httpd-php .php\n\

    AddType application/x-httpd-php-source .phps" /usr/local/httpd/conf/httpd.conf

    systemctl restart httpd

    #

    #echo文件到index.php里面

    echo -e "<?php \nphpinfo();\n?>" >>/usr/local/httpd/htdocs/index.php

    #输出用户测试网页链接

    echo -e "\e\t\t\t[5;34m test http://$ip/index.php \e[0m"

    #php连接mysql测试

    read -p "if connect mysql? (y/n)? " an

    if [ $an == "y" ];then

    #echo文件到index.php中,注意单引号中不识别$ip

    echo -e '<?php \n$link=mysql_connect(localhost);\nif($link) echo "Success!!";\nelse echo "Fail!!";\nmysql_close();\n?>' >>/usr/local/httpd/htdocs/index1.php

    #将localhost替换成 $ip','root' ,注意双引号中不识别$link(要特别注意单引号和双引号之间的区别!)

    sed -i "s/localhost/'$ip','root'/g" /usr/local/httpd/htdocs/index1.php

    echo -e "\e\t\t\t[32m http://$ip/index.php \e[0m"

    else

    echo -e "\e\t\t\t[32m lamp install finish!\e[0m"

    exit 0

    fi

    }

    #

    #nginx-php安装

    nginx_php()

    {

    useradd -M -s /sbin/nologin php

    cd /opt/php-5.6.11

    ./configure \

    --prefix=/usr/local/php5 \

    --with-gd \

    --with-zlib \

    --with-mysql=/usr/local/mysql \

    --with-config-file-path=/usr/local/php5 \

    --enable-mbstring \

    --with-jpeg-dir \

    --with-openssl \

    --disable-ipv6 \

    --enable-fpm

    make && make install

    #安装gd和修改php配置文件

    cd /opt/zend-loader-php5.5-linux-x86_64/ && cp ZendGuardLoader.so /usr/local/php5/lib/php

    #

    echo -e "[Zend Guard Loader]\nzend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so\nzend_loader.enable=1" >>/usr/local/php5/php.ini

    cd /usr/local/php5/etc/ && cp php-fpm.conf.default php-fpm.conf

    #替换文件

    sed -i 's#^user = .$#user = php#' php-fpm.conf

    sed -i 's#^group = .$#group = php#' php-fpm.conf

    sed -i 's#^pm.max_children = .$#pm.max_children = 50#' php-fpm.conf

    sed -i 's#^pm.max_spare_server = .$#pm.max_children = 35#' php-fpm.conf

    sed -i 's#^pm.min_spare_server = .$#pm.min_children = 5#' php-fpm.conf

    sed -i 's#^pm.start_server = .$#pm.min_children = 20#' php-fpm.conf

    #php服务启动和检查

    /usr/local/php5/sbin/php-fpm

    port=`netstat -ntap | grep ":9000" | wc -l`

    if [ $? -eq 0 ]&&[ $port -ne 0 ];then

    echo -e "\033\t\t\t[32m php install success! \033[0m"

    else

    echo -e "\033\t\t\t[5;31m php install fail! \033[0m"

    exit 0

    fi

    }

    #

    #nginx和php结合

    ngin_vim()

    {

    #修改nginx配置

    mkdir -p /var/www/html/btcom

    #将45行 ; 替换成index.php; (或者在 ; 前面加 index.php,这个命令不好写)

    sed -i '45s/;/ index.php;/g' /usr/local/nginx/conf/nginx.conf

    #在64行插入

    sed -i "64ilocation ~ .php$ {\n\

    root /var/www/html/btcom;\n\

    fastcgi_pass 127.0.0.1:9000;\n\

    fastcgi_index index.php;\n\

    fastcgi_param SCRIPT_FILENAME;\n\

    include fastcgi_params;\n\

    }" /usr/local/nginx/conf/nginx.conf

    #在68行;后插入语句,注意双引号不识别$document_root$fastcgi_script_name,才用单引号重新插入

    sed -i '68s/;/ $document_root$fastcgi_script_name;/g' /usr/local/nginx/conf/nginx.conf

    echo -e "<?php \nphpinfo();\n?>" >>/var/www/html/btcom/index.php

    nginx -s reload

    echo -e "\e[32m test http://$ip/index.php \e[0m"

    #

    #php连接mysql

    read -p "php connect mysql (y/n)? " answer

    if [ $answer == "y" ];then

    #echo文件,注意但,双引号,原因同上

    echo -e '<?php \n$link=mysql_connect(localhost);\nif($link) echo "Success!!";\nelse echo "Fail!!";\nmysql_close();\n?>' >>/var/www/html/btcom/index1.php

    sed -i "s/localhost/'$ip','root'/g" /var/www/html/btcom/index1.php

    echo -e "\e\t\t\t[32m test http://$ip/index.php \e[0m"

    else

    echo -e "\e\t\t\t[32m lnmp install finish!\e[0m"

    exit 0

    fi

    }

    #

    #论坛安装

    discuz()

    {

    #不登录mysql,创建数据库,授权。

    mysql -e "create database bbs;grant all on bbs.* To 'bbsuser'@'%' identified BY 'admin123';flush privileges;"

    #bbsuser 连接 数据库

    echo -e '<?php \n$link=mysql_connect(localhost);\nif($link) echo "Success!!";\nelse echo "Fail!!";\nmysql_close();\n?>' >>/usr/local/httpd/htdocs/index1.php

    sed -i "s/localhost/'$ip','bbsuser','admin123'/g" /usr/local/httpd/htdocs/index1.php

    #去网页验证连接数据库是否成功

    echo -e "\e\t\t\t[32m test http://$ip/index1.php \e[0m"

    #进行人机交互,连接成功进行discuz安装

    read -p "bbs connect mysql success (y/n)? " aw

    if [ $aw == "y" ];then

    unzip Discuz_X2.5_SC_UTF8.zip -d /opt && mkdir -p /usr/local/httpd/htdocs/bbs/ &&cp -r /opt/upload/ /usr/local/httpd/htdocs/bbs/ &&cd /opt/httpd/htdocs/bbs/upload/

    chown -R daemon ./config/

    chown -R daemon ./data/

    chown -R daemon ./uc_client/

    chown -R daemon ./uc_server/data/

    sed -i '927s/;date.timezone =/ date.timezone = UTC/g' /usr/local/php5/php.ini

    #输出完成信息,提醒用户去网页安装,给出安装链接

    echo -e "\e\t\t\t[5;31m you can install discuz at http://$ip/bbs/upload/install \e[0m"

    #数据库连接失败,直接退出脚本

    else echo -e "\e\t\t\t[5;31m bbs connect mysql fail,check! \e[0m"

    exit 0

    fi

    }

    #

    #执行package.sh脚本

    ./package.sh

    #关闭防火墙,增强性

    systemctl stop firewalld.service

    setenforce 0

    #过滤出本机ip

    ip=`ifconfig ens33 | grep "netmask" | awk '{print $2}'`

    #查看e.sh,将2个脚本连接起来

    num=`cat /root/e.sh`

    #2脚本已经建立连接,删除e.sh,防止占用空间

    rm -rf e.sh

    #lamp脚本安装

    if [ $num == "lamp" ]

    then

    #apache 安装

    apache

    #mysql 安装

    mysql_con

    #apache和php连接

    apa_php

    discuz

    #lnmp脚本安装

    elif [ $num == "lnmp" ]

    then

    #nginx.mysql,php安装

    nginxt &&mysql_con &&nginx_php

    #修改nginx配置文件

    ngin_vim

    discuz

    else

    echo -e "\e\t\t\t[5;31m input error,check! \e[0m"

    exit 1

    fi

    4.赋予脚本权限

    chmod +x *.sh

    5.执行脚本

    ./lnmp.sh

    6.编辑python shell

    from selenium import webdriver

    import time

    #采用谷歌浏览器

    driver = webdriver.Chrome()

    #进入安装链接

    driver.get("http://192.168.65.185/bbs/upload/install/")

    print(driver.title)

    #定位“同意”元素,点击鼠标

    driver.find_element_by_name("submit").click()

    #定位“下一步”元素,点击鼠标

    driver.find_element_by_xpath("//input[@type='submit']").click()

    #定位“下一步”元素,点击鼠标

    driver.find_element_by_name("submitname").click()

    #定位"数据库服务器填写框", 清除原有文本

    driver.find_element_by_name("dbinfo[dbhost]").clear()

    #在上一步,清除文本后,输入新文本

    driver.find_element_by_name("dbinfo[dbhost]").send_keys("192.168.65.185")

    #定位,清除文本

    driver.find_element_by_name("dbinfo[dbname]").clear()

    #填写新文本

    driver.find_element_by_name("dbinfo[dbname]").send_keys("bbs")

    driver.find_element_by_name("dbinfo[dbuser]").clear()

    driver.find_element_by_name("dbinfo[dbuser]").send_keys("bbsuser")

    driver.find_element_by_name("dbinfo[dbpw]").clear()

    driver.find_element_by_name("dbinfo[dbpw]").send_keys("admin123")

    driver.find_element_by_name("admininfo[password]").send_keys("admin123")

    driver.find_element_by_name("admininfo[password2]").send_keys("admin123")

    #定位"下一步"元素,点击鼠标

    driver.find_element_by_name("submitname").click()

    #跳转到论坛首页

    driver.get("http://192.168.65.185/bbs/upload")

    print(driver.title)

    #自动输入用户名,密码

    driver.find_element_by_name("username").send_keys("admin")

    driver.find_element_by_name("password").send_keys("admin123")

    #点击自动登录

    driver.find_element_by_xpath("//button[@type='submit']").click()

    #点击登录

    driver.find_element_by_name("cookietime").click()

    7.执行python shell (快捷键 F5)

    温馨提示:

    1.本次脚本是在上一篇博客的基础上完成的,package.sh脚本查看上一篇博客https://blog.51cto.com/13760351/2352154

    2.window 网页自动安装方法是采用python selenium 模块,这部分知识将在后面的博客中发布,请期待!

    3.此脚本不适用于新手安装discuz论坛(脚本执行太快,出现问题,无法找到问题,解决问题),只适合作为shell和Python shell 脚本爱好者练习使用。

    4.脚本安装的方法很多,这只是其中一种,若大家有更方便快捷的脚本,欢迎留言交流!

    5.脚本资料下载地址:http://down.51cto.com/data/2459604

    6.每个人的服务器地址不一样,需要手动去python shell修改,shell脚本执行完成后,需要手动去执行python shell 脚本!

    展开全文
  • 安装pytest的allure的支撑插件 D:\Program Files\Python38\Scripts>pip install allure-pytest 2、首先我们在运行项目文件的时候先创建一个allure报告存放的路径(生成allure的一些xml文件) 3、在执行pytest命令式...
  • 主要介绍 实现一键式自动化操作 ,具体的操作是: 如何快速的创建 Python 与 Shell 文件? 是的,创建 Python 与 Shell 文件是一个很简单的事情,但是如何做到 快速 ,这恐怕需要动点歪脑筋。我所能想到的常规方法是...
  • 在web应用中经常会出现frame嵌套的应用,假设页面上有A,B两个frame,其中B在A内,那么定位B中的内容则需要先到A,再到B。switchTo().frame方法可以把当前定位的主题切换到frame里,在frame里实际是嵌套了另外一个页面...
  • 插件使用库 request库:requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际的 URL 和 POST 数据自动编码。POC代码框架 1、首先导入requests标准库...
  • coding=utf-8为了防止乱码问题, 以及方便地在程序中添加中文注释,把编码统一成... 皱皮导入 WebDriver 包, 才能够使用 WebDriver AP 进行自动化脚本开发。driver = webdriver.Chrome()把 webdriver 的 Chrome 对...
  • 自动化脚本编写实例打开浏览器访问pto登陆修改管理员密码单元测试数据检查输入的数据合法性获取输入错误数据之后的页面提示语编写测试用例编写单元测试类1 单元测试中的通用操作2 测试类进行单元测试并生成测试报告...
  • 今天的脚本就是为了方便平时的运维工作,即使一个不懂网络、Linux的人,也能够完成网络、系统的变更。本文章适合网络、系统运维工程师(解决思路是一样的)。大部分知识点在以前的文章中介绍过,不懂的请点击我的头像...
  • 说到盲注的排除,我们第一时间就会想到二分法,因为不可能逐个逐个的用 “=” 去排除,这样浪费的时间会更多,所以脚本编写我也是用二分法的,下面我会用自己盲注数据库名字的例子来说明一下: #!/usr/bin/env ...
  • 实现效果:执行脚本后启动Firefox浏览器后进入百度主页,输入“Selenium”后,单击搜索按钮,最后关闭浏览器的过程(默认安装了Firefox浏览器),如下图所示:脚本内容如下:#-*- coding:UTF-8 -*-from selenium ...
  • 一般情况下编译安装python环境需要执行以下步骤:下载源码包解压源码.../usr/bin/python#coding:utf-8'''date:9/2/17 18:03 PMauthor:lockeyemail:lockey@123.comdesc:python自动化安装用户指定版本的python环境'''...
  • 对于很多刚开始写自动化测试脚本的人来说,很容易把所有的代码工具都放在一个代码模块中,使代码看起来杂乱无章,很繁琐,今天分享搭建简单自动化脚本框架,对代码进行封装,这样如果我们要更改代码就不要改几遍或者...
  • Python 编写自动化工具

    万次阅读 多人点赞 2017-08-29 00:41:44
    但是假如我们要做跨平台的开发,根据每个平台去开发一套功能相同的自动化脚本显然不是最好的选择,选择跨平台通用的脚本是更好的选择,Python 就是常用来编写自动化工具的跨平台脚本语言。Python 环境安装:1.资源...
  • 本文主要介绍使用python编写目录扫描脚本 老规矩,先贴代码再解释: import sys import requests from fake_useragent import UserAgent from optparse import OptionParser from threading import Thread # 扫描...
  • 我们实际跑自动化脚本的过程中,是需要用脚本调用appium启动app的,接下来就尝试写Python脚本启动app并登陆app。环境为Windows10 + Python3.7 + appium1.18.0 + Android手机 + 今日头条app + Pycharm 一,连接测试...
  • 今天的脚本就是为了方便平时的运维工作,即使一个不懂网络、Linux的人,也能够完成网络、系统的变更。本文章适合网络、系统运维工程师(解决思路是一样的)。大部分知识点在以前的文章中介绍过,不懂的请点击我的...
  • 编写自动化测试脚本心得--------入门篇本文中将不会讲解ISEE的测试原理、不说明Python的常用语法、不介绍OTP测试平台的架构,自动化测试组的牛人们已经为我们编写了很多这些方面的资料,而且我也怕学艺不精说的不对...
  • /usr/bin/pythonimport os,sysimport tarfileimport shutildata_dir ='/alidata'new_dir='/alidata/tomcat'change_file='server.xml'#定义安装的文件字典files = {"tomcat8" : {"apache-tomcat-8.5.29.tar.gz" : ...
  • 在eclipse java中编写自动化测试脚本这个错误怎么解决以前写过关于selennium的一些代码,你至少少了一下两个包: selenium-html-runner-3.13.0.jarselenium-server-standalone-3.13.0.jar还有一些包你可能用不到如果...
  • 有了这2个词,才能编写设备的输入输出函数: class I设备: def f输入(self, a文本): self.m连接.f写(a文本) def f输入_回车(self): self.m连接.f写("r") def f输出(self): return self.m连接.f读_最新() 设备要执行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,704
精华内容 1,081
关键字:

python编写自动化脚本

python 订阅