精华内容
下载资源
问答
  • 服务器上运行Python项目

    万次阅读 2018-09-07 09:19:03
    直接在笔记本里跑Python项目实在是太慢了,师兄给了实验室服务器一个节点,安排上了!  首先下载了师兄给的bitvise安装包,其实我之前用的是Xshell5,我也不造有什么区别,就又安装了一个。对比之后我发现bitvise...

         直接在笔记本里跑Python项目实在是太慢了,师兄给了实验室服务器一个节点,安排上了!

         首先下载了师兄给的bitvise安装包,其实我之前用的是Xshell5,我也不造有什么区别,就又安装了一个。对比之后我发现bitvise上传文件似乎方便些,可以直接在可视化窗口完成,之前在Xshell里还要用rz -be命令。

         进入终端之后在/home路径下创建了一个自己文件夹,把文件上传进去了。

         接着尝试python test.py

         报错:没有pandas,numpy等包,所以要自己安装第三方库

         安装本来准备用pip,发现没有自带,最后试出来自带了yum,就用yum安装

         yum -y install pandas

         报错:no packages pandas available ,参考了几篇博客,说是可能是网络dns或者镜像的问题,ping可以成功网络没问题,镜像的用它的方法试了也不成功。

         找别的路子,用yum安装了pip,打算用pip来安装第三方库

         报错:“Command "python setup.py egg_info" failed with error code 10”

         参照网上一篇博客的解决方法,说是先install wheel,然后去网址下载对应版本的文件,进去之后发现Python版本最低都是2.7

         而centos系统自带的版本是2.6.6,只好又去升级,参照此篇博客https://www.cnblogs.com/zrz43/p/4895635.html升级到了3.3

         (注意:此博客wget那行命令失败了,根据提示加了 --no-check-certificate才成功)

         最gg的是发现网址是3.4、3.5、3.5、3.7都有,就是没有3.3.

         又回到上一步,升级到3.4,改变默认版本时一直没有成功,被那套软连接改来改去的 python python3 python3.3.0 python3.4.0a3傻傻分不清了

          

         结果就是: 输入python找不到结果、输入python3显示版本为3.3.0...

         坑了半天之后,问师兄他说这个是因为pip版本太低了

         升级用pip install --upgrade pip一直报错,又从另一篇博客中看到pip install -U pip,成功升级了

         然后继续pip install pandas 又报了这个错误:

        

         然后我又去安装了2.7.1,使得输入python版本显示2.7.1,输入python3显示3.3.0

         但是pip还是不能用,扎心了!

         发给师兄看,师兄说你还是下载个anaconda吧,它把一些常见的第三方库都安装好了

        (师兄推荐的是anaconda,但是我看官网要求的是3.6,而我是3.4,就先安装了和2.7对应版本的2)

         参照这篇https://blog.csdn.net/zaishijizhidian/article/details/81663387安装

         到此历经一波三折终于可以正常跑了!

     

    展开全文
  • colab配置运行python项目

    千次阅读 2021-03-22 12:50:50
    复杂的模型一般在GPU上面运行,而一般电脑基本跑不起来,我的MAX250基本没戏,一运行就会报错 RuntimeError: CUDA out of memory. Tried to allocate 30.00 MiB (GPU 0; 2.00 GiB total capacity; 271.60 MiB ...
    import os
    import sys
    from google.colab import drive
    print(os.path.abspath("."))
    drive.mount('/content/drive')
    os.chdir('/content/drive/My Drive/ML/honest') 
    sys.path.append('/content/drive/My Drive/ML/project-name')
    

    注:这里是博主自己摸索的一个方式,如果使用其他方法无法成功的话,这里的方法可以一试,而如果有更好的方式,可以留言分享学习一下。

    复杂的模型一般在GPU上面运行,而一般电脑基本跑不起来,我的MAX250基本没戏,一运行就会报错

    RuntimeError: CUDA out of memory. Tried to allocate 30.00 MiB (GPU 0; 2.00 GiB total capacity; 271.60 MiB already allocated; 5.06 MiB free; 352.00 MiB reserved in total by PyTorch)
    

    然而,可以白嫖试试谷歌的Colab,只需要稳定一点的小飞机,然后就一般都可以申请成功。

    …这里就省略掉了如何注册账号以及如何申请的步骤,可以自行百度

    在申请谷歌云盘成功之后,单独创建文件夹上传所有的项目文件,这里很方便,可以直接上传整个项目文件夹(疼讯学习一下)

    在这里插入图片描述
    记住这里的文件位置,新建一个运行程序的笔记自定义名称.ipynb用来运行管理整个项目。创建成功之后,直接点击进入colab界面,进行如下配置
    第一次运行,需要谷歌授权以及安装相关库,具体的过程我就不介绍了,别人写的很详细了👉《Google Colab挂载Google Drive并运行程序

    !apt-get install -y -qq software-properties-common python-software-properties module-init-tools
    !add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
    !apt-get update -qq 2>&1 > /dev/null
    !apt-get -y install -qq google-drive-ocamlfuse fuse
    from google.colab import auth
    auth.authenticate_user()
    from oauth2client.client import GoogleCredentials
    creds = GoogleCredentials.get_application_default()
    import getpass
    !google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
    vcode = getpass.getpass()
    !echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
    
    1. 挂载云盘,才能访问到对应位置的文件
    from google.colab import drive
    drive.mount('/content/drive')
    
    1. 切换至项目路径,添加以后并不能成功引入
    import os
    os.chdir('/content/drive/My Drive/项目路径/项目文件夹/')
    
    1. 具体过程可以看图,有时候突然断线了可以点击Editing左边Reconnect状态的按钮
      在这里插入图片描述
      .py程序是不能直接运行的,但是可以修改,运行需要在.ipynb中运行:
    %run 主函数.py # 主函数文件
    

    注意:如果pip前没有加!的话,每次都需要重新install

    现在可能出现的问题:各个文件之间import失败,对应解决方案:

    1. 配置工作路径,见上面的博文
    2. .py文件import部分都加上当前的工作路径
    import sys
    sys.path.append('项目路径/项目文件夹/')
    
    1. 开始愉快的学习
    展开全文
  • 注意 :第一步,一定要先安装,否则后面会有莫名奇妙的问题 : yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel xz gcc zlib zlib-...wget python地址(以tgz结尾的,例如...

    注意 :第一步,一定要先安装,否则后面会有莫名奇妙的问题 : yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel xz gcc zlib zlib-devel

    yum install yun-utils make get

    wget python地址(以tgz结尾的,例如 :Python-3.6.0.tgz )
    tar xzf python名字
    cd python名字
    ./configure 如果执行错误,查看 https://blog.csdn.net/qq_31306973/article/details/78538601
    make 编译
    make install 安装
    —————- python 安装完毕 输入python3查看是否安装完毕

    yun install nginx
    y

    —————-nginx 安装完毕

    创建项目存在的路径

    cd /var/

    mkdir www 创建目录
    cd www
    mkdir mysite

    把pycharm里面的项目放进去

    python3 -m venv py3 py3 是虚拟环境的名字 如果报错,那么可能是python3默认需要的环境未安装成功,
    需要 首先 安装 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel xz gcc zlib zlib-devel
    然后重新 make , make install

    安装 :yum -y openssl-d

    source venv/bin/activate 打开虚拟环境
    pip3 install flask 安装对应的插件
    pip3 install uwsgi 安装 uwsgi 容器

    —————–进行配置—————————–

    —-配置nginx /etc/nginx/ 找到对应配置文件

    cd /ect
    cd /nginx
    为防止改错,先复制一份config文件出来 [root@VM_0_13_centos nginx]# cp nginx.conf nginx.conf_bak

    修改
    user root; 原本 user user;
    新增 gzip on;

    注释
    #    server {
    #        listen       80 default_server;
    #        listen       [::]:80 default_server;
    #        server_name  _;
    #        root         /usr/share/nginx/html;
    
    #        # Load configur ation files for the default server block.
    #        include /etc/nginx/default.d/*.conf;
    
    #        location / {
    #        }
    
    #        error_page 404 /404.html;
    #            location = /40x.html {
    #        }
    
    #        error_page 500 502 503 504 /50x.html;
    #            location = /50x.html {
    #        }
    #    }

    保存信息

    include /etc/nginx/conf.d/*.conf 副本配置在这

    配置文件
    例如 :test.conf

    server {
       listen            80;
       listen 443 default ssl;  #使用https 需要监听该接口
       server_name       www.domain.com;
       charset           utf-8;
       access_log        /var/log/nginx/log/test.access.log     main;
       error_log         /var/log/nginx/log/test.error.log      warn;
    
    #   ssl on;  #使用https 需要关闭该接口
       ssl_certificate      1_domain.com_bundle.crt;
       ssl_certificate_key  2_domain.com.key;
       ssl_session_timeout 5m;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
       ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
       ssl_prefer_server_ciphers on;
    
       location  /  {
         root   /var/www/test;
    
         include uwsgi_params;
         uwsgi_pass    127.0.0.1:5000;
         uwsgi_param UWSGI_PYHOME    /var/www/test/venv;
         uwsgi_param UWSGI_CHDIR     /var/www/test;
         uwsgi_param PYTHONPATH      /var/www/test;
         uwsgi_param UWSGI_MODULE    test;
         uwsgi_param UWSGI_CALLABLE  app;
       }
    }
    创建 vi uwsgi.ini 配置文件
    [uwsgi]
    enable-theads=true
    thunder-lock=true
    vhost=true
    socket=127.0.0.1:5000
    master=true
    workers=4
    max-requests=128
    

    ——-配置完成 ,启动——-

    nginx -t -c /etc/nginx/nginx.conf 查看nginx是否存在语法错误如果success,那么直接运行下面指令

    systemctl start nginx.service 启动nginx
    source venv/bin/activate 打开虚拟环境
    运行 uwsgi –ini uwsgi.ini (存放ini的文件目录)

    辅助指令:
    source venv/bin/activate 打开虚拟环境
    deactivate  退出虚拟环境
    ps -ef | grep nginx
    kill -QUIT  进程号
    systemctl status nginx.service可以看到具体的错误是什么
    pkill -9 uwsgi 关掉服务器
    nginx -s reload  重启
    展开全文
  • Python爬虫入门项目

    万次阅读 多人点赞 2017-12-25 16:26:21
    Python是什么 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。 创始人Guido van Rossum是BBC出品英剧Monty Python’s Flying Circus(中文:蒙提·派森的...

    Python是什么

    Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。

    创始人Guido van Rossum是BBC出品英剧Monty Python’s Flying Circus(中文:蒙提·派森的飞行马戏团)的狂热粉丝,因而将自己创造的这门编程语言命名为Python。

    人生苦短,我用python,翻译自"Life is short, you need Python"

    Python英式发音:/ˈpaɪθən/ ,中文类似‘拍森’。而美式发音:/ˈpaɪθɑːn/,中文类似‘拍赏’。我看麻省理工授课教授读的是‘拍赏’,我觉得国内大多是读‘拍森’吧。

    2017年python排第一也无可争议,比较AI第一语言,在当下人工智能大数据大火的情况下,python无愧第一语言的称号,至于C、C++、java都是万年的老大哥了,在代码量比较方面,小编相信java肯定是完爆其它语言的。

    不过从这一年的编程语言流行趋势看,java依然是传播最多的,比较无论app、web、云计算都离不开,而其相对python而言,学习路径更困难一点,想要转行编程,而且追赶潮流,python已然是最佳语言。

    许多大型网站就是用Python开发的,国内:豆瓣、搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝、热酷、土豆、新浪、果壳…; 国外:谷歌、NASA、YouTube、Facebook、工业光魔、红帽…

    Python将被纳入高考内容

    浙江省信息技术课程改革方案已经出台,Python确定进入浙江省信息技术高考,从2018年起浙江省信息技术教材编程语言将会从vb更换为Python。其实不止浙江,教育大省北京和山东也确定要把Python编程基础纳入信息技术课程和高考的内容体系,Python语言课程化也将成为孩子学习的一种趋势。尤其山东省最新出版的小学信息技术六年级教材也加入了Python内容,小学生都开始接触Python语言了!!

    再不学习,又要被小学生完爆了。。。

     

    Python入门教程

    Python能做什么

    • 网络爬虫
    • Web应用开发
    • 系统网络运维
    • 科学与数字计算
    • 图形界面开发
    • 网络编程
    • 自然语言处理(NLP)
    • 人工智能
    • 区块链
    • 多不胜举。。。

    Python入门爬虫

    这是我的第一个python项目,在这里与大家分享出来~

    • 需求
      • 我们目前正在开发一款产品其功能大致是:用户收到短信如:购买了电影票或者火车票机票之类的事件。然后app读取短信,解析短信,获取时间地点,然后后台自动建立一个备忘录,在事件开始前1小时提醒用户。
    • 设计
      • 开始我们将解析的功能放在了服务端,但是后来考虑到用户隐私问题。后来将解析功能放到了app端,服务端只负责收集数据,然后将新数据发送给app端。
      • 关于服务端主要是分离出两个功能,一、响应app端请求返回数据。二、爬取数据,存入数据库。
      • 响应请求返回数据使用java来做,而爬取数据存入数据库使用python来做,这样分别使用不同语言来做是因为这两种语言各有优势,java效率比python高些,适合做web端,而爬取数据并不是太追求性能且python语言和大量的库适合做爬虫。
    • 代码
      • 本项目使用python3的版本
      • 获取源码:扫描下方关注微信公众号「裸睡的猪」回复:爬虫入门 获取
         

         

      • 了解这个项目你只需要有简单的python基础,能了解python语法就可以。其实我自己也是python没学完,然后就开始写,遇到问题就百度,边做边学这样才不至于很枯燥,因为python可以做一些很有意思的事情,比如模拟连续登录挣积分,比如我最近在写一个预定模范出行车子的python脚本。推荐看廖雪峰的python入门教程
      • 首先带大家看看我的目录结构,开始我打算是定义一个非常好非常全的规范,后来才发现由于自己不熟悉框架,而是刚入门级别,所以就放弃了。从简而入:
      • 下面咱们按照上图中的顺序,从上往下一个一个文件的讲解init.py包的标识文件,python包就是文件夹,当改文件夹下有一个init.py文件后它就成为一个package,我在这个包中引入一些py供其他py调用。

    init.py

    # -*- coding: UTF-8 -*-  
    
    # import need manager module  
    import MongoUtil  
    import FileUtil  
    import conf_dev  
    import conf_test  
    import scratch_airport_name  
    import scratch_flight_number  
    import scratch_movie_name  
    import scratch_train_number  
    import scratch_train_station  
    import MainUtil
    

    下面两个是配置文件,第一个是开发环境的(windows),第二个是测试环境的(linux),然后再根据不同系统启用不同的配置文件

    conf_dev.py

    # -*- coding: UTF-8 -*-  
    # the configuration file of develop environment  
    
    # path configure  
    data_root_path = 'E:/APK98_GNBJ_SMARTSERVER/Proj-gionee-data/smart/data'  
    
    # mongodb configure  
    user = "cmc"  
    pwd = "123456"  
    server = "localhost"  
    port = "27017"  
    db_name = "smartdb"
    

    conf_test.py

    # -*- coding: UTF-8 -*-  
    # the configuration file of test environment  
    
    #path configure  
    data_root_path = '/data/app/smart/data'  
    
    #mongodb configure  
    user = "smart"  
    pwd = "123456"  
    server = "10.8.0.30"  
    port = "27017"  
    db_name = "smartdb"
    

    下面文件是一个util文件,主要是读取原文件的内容,还有将新内容写入原文件。

    FileUtil.py

    # -*- coding: UTF-8 -*-  
    import conf_dev  
    import conf_test  
    import platform  
    
    
    # configure Multi-confronment  
    # 判断当前系统,并引入相对的配置文件
    platform_os = platform.system()  
    config = conf_dev  
    if (platform_os == 'Linux'):  
        config = conf_test  
    # path  
    data_root_path = config.data_root_path  
    
    
    # load old data  
    def read(resources_file_path, encode='utf-8'):  
        file_path = data_root_path + resources_file_path  
        outputs = []  
        for line in open(file_path, encoding=encode):  
            if not line.startswith("//"):  
                outputs.append(line.strip('\n').split(',')[-1])  
        return outputs  
    
    
    # append new data to file from scratch  
    def append(resources_file_path, data, encode='utf-8'):  
        file_path = data_root_path + resources_file_path  
        with open(file_path, 'a', encoding=encode) as f:  
            f.write(data)  
        f.close
    

    下面这个main方法控制着执行流程,其他的执行方法调用这个main方法

    MainUtil.py

    # -*- coding: UTF-8 -*-  
    
    import sys  
    from datetime import datetime  
    import MongoUtil  
    import FileUtil  
    
    # @param resources_file_path 资源文件的path  
    # @param base_url 爬取的连接  
    # @param scratch_func 爬取的方法  
    def main(resources_file_path, base_url, scratch_func):  
        old_data = FileUtil.read(resources_file_path)   #读取原资源  
        new_data = scratch_func(base_url, old_data)     #爬取新资源  
        if new_data:        #如果新数据不为空  
            date_new_data = "//" + datetime.now().strftime('%Y-%m-%d') + "\n" + "\n".join(new_data) + "\n"      #在新数据前面加上当前日期  
            FileUtil.append(resources_file_path, date_new_data)     #将新数据追加到文件中  
            MongoUtil.insert(resources_file_path, date_new_data)    #将新数据插入到mongodb数据库中  
        else:   #如果新数据为空,则打印日志  
            print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '----', getattr(scratch_func, '__name__'), ": nothing to update ")
    

    将更新的内容插入mongodb中

    MongoUtil.py

    # -*- coding: UTF-8 -*-  
    
    import platform  
    from pymongo import MongoClient  
    from datetime import datetime, timedelta, timezone  
    import conf_dev  
    import conf_test  
    
    # configure Multi-confronment  
    platform_os = platform.system()  
    config = conf_dev  
    if (platform_os == 'Linux'):  
        config = conf_test  
    # mongodb  
    uri = 'mongodb://' + config.user + ':' + config.pwd + '@' + config.server + ':' + config.port + '/' + config.db_name  
    
    
    # 将数据写入mongodb  
    # @author chenmc  
    # @param uri connect to mongodb  
    # @path save mongodb field  
    # @data save mongodb field  
    # @operation save mongodb field default value 'append'  
    # @date 2017/12/07 16:30  
    # 先在mongodb中插入一条自增数据 db.sequence.insert({ "_id" : "version","seq" : 1})  
    
    def insert(path, data, operation='append'):  
        client = MongoClient(uri)  
        resources = client.smartdb.resources  
        sequence = client.smartdb.sequence  
        seq = sequence.find_one({"_id": "version"})["seq"]      #获取自增id  
        sequence.update_one({"_id": "version"}, {"$inc": {"seq": 1}})       #自增id+1  
        post_data = {"_class": "com.gionee.smart.domain.entity.Resources", "version": seq, "path": path,  
                     "content": data, "status": "enable", "operation": operation,  
                     "createtime": datetime.now(timezone(timedelta(hours=8)))}  
        resources.insert(post_data)     #插入数据
    

    项目引入的第三方库,可使用pip install -r requirements.txt下载第三方库

    requirements.txt

    # need to install module# need to install module  
    bs4  
    pymongo  
    requests  
    json
    

    下面真正的执行方法来了,这五个py分别表示爬取五种信息:机场名、航班号、电影名、列车号、列车站。他们的结构都差不多,如下:

    第一部分:定义查找的url;
    第二部分:获取并与旧数据比较,返回新数据;
    第三部分:main方法,执行写入新数据到文件和mongodb中;
    

    scratch_airport_name.py:爬取全国机场

    # -*- coding: UTF-8 -*-  
    import requests  
    import bs4  
    import json  
    import MainUtil  
    
    resources_file_path = '/resources/airplane/airportNameList.ini'  
    scratch_url_old = 'https://data.variflight.com/profiles/profilesapi/search'  
    scratch_url = 'https://data.variflight.com/analytics/codeapi/initialList'  
    get_city_url = 'https://data.variflight.com/profiles/Airports/%s'  
    
    
    #传入查找网页的url和旧数据,然后本方法会比对原数据中是否有新的条目,如果有则不加入,如果没有则重新加入,最后返回新数据
    def scratch_airport_name(scratch_url, old_airports):  
        new_airports = []  
        data = requests.get(scratch_url).text  
        all_airport_json = json.loads(data)['data']  
        for airport_by_word in all_airport_json.values():  
            for airport in airport_by_word:  
                if airport['fn'] not in old_airports:  
                    get_city_uri = get_city_url % airport['id']  
                    data2 = requests.get(get_city_uri).text  
                    soup = bs4.BeautifulSoup(data2, "html.parser")  
                    city = soup.find('span', text="城市").next_sibling.text  
                    new_airports.append(city + ',' + airport['fn'])  
        return new_airports  
    
     #main方法,执行这个py,默认调用main方法,相当于java的main
    if __name__ == '__main__':  
        MainUtil.main(resources_file_path, scratch_url, scratch_airport_name)
    

    scratch_flight_number.py:爬取全国航班号

    #!/usr/bin/python  
    # -*- coding: UTF-8 -*-  
    
    import requests  
    import bs4  
    import MainUtil  
    
    resources_file_path = '/resources/airplane/flightNameList.ini'  
    scratch_url = 'http://www.variflight.com/sitemap.html?AE71649A58c77='  
    
    
    def scratch_flight_number(scratch_url, old_flights):  
        new_flights = []  
        data = requests.get(scratch_url).text  
        soup = bs4.BeautifulSoup(data, "html.parser")  
        a_flights = soup.find('div', class_='list').find_all('a', recursive=False)  
        for flight in a_flights:  
            if flight.text not in old_flights and flight.text != '国内航段列表':  
                new_flights.append(flight.text)  
        return new_flights  
    
    
    if __name__ == '__main__':  
        MainUtil.main(resources_file_path, scratch_url, scratch_flight_number)
    

    scratch_movie_name.py:爬取最近上映的电影

    #!/usr/bin/python  
    # -*- coding: UTF-8 -*-  
    import re  
    import requests  
    import bs4  
    import json  
    import MainUtil  
    
    # 相对路径,也是需要将此路径存入数据库  
    resources_file_path = '/resources/movie/cinemaNameList.ini'  
    scratch_url = 'http://theater.mtime.com/China_Beijing/'  
    
    
    # scratch data with define url  
    def scratch_latest_movies(scratch_url, old_movies):  
        data = requests.get(scratch_url).text  
        soup = bs4.BeautifulSoup(data, "html.parser")  
        new_movies = []  
        new_movies_json = json.loads(  
            soup.find('script', text=re.compile("var hotplaySvList")).text.split("=")[1].replace(";", ""))  
        coming_movies_data = soup.find_all('li', class_='i_wantmovie')  
        # 上映的电影  
        for movie in new_movies_json:  
            move_name = movie['Title']  
            if move_name not in old_movies:  
                new_movies.append(movie['Title'])  
        # 即将上映的电影  
        for coming_movie in coming_movies_data:  
            coming_movie_name = coming_movie.h3.a.text  
            if coming_movie_name not in old_movies and coming_movie_name not in new_movies:  
                new_movies.append(coming_movie_name)  
        return new_movies  
    
    
    if __name__ == '__main__':  
        MainUtil.main(resources_file_path, scratch_url, scratch_latest_movies)
    

    scratch_train_number.py:爬取全国列车号

    #!/usr/bin/python  
    # -*- coding: UTF-8 -*-  
    import requests  
    import bs4  
    import json  
    import MainUtil  
    
    resources_file_path = '/resources/train/trainNameList.ini'  
    scratch_url = 'http://www.59178.com/checi/'  
    
    
    def scratch_train_number(scratch_url, old_trains):  
        new_trains = []  
        resp = requests.get(scratch_url)  
        data = resp.text.encode(resp.encoding).decode('gb2312')  
        soup = bs4.BeautifulSoup(data, "html.parser")  
        a_trains = soup.find('table').find_all('a')  
        for train in a_trains:  
            if train.text not in old_trains and train.text:  
                new_trains.append(train.text)  
        return new_trains  
    
    
    if __name__ == '__main__':  
        MainUtil.main(resources_file_path, scratch_url, scratch_train_number)
    

    scratch_train_station.py:爬取全国列车站

    #!/usr/bin/python  
    # -*- coding: UTF-8 -*-  
    import requests  
    import bs4  
    import random  
    import MainUtil  
    
    resources_file_path = '/resources/train/trainStationNameList.ini'  
    scratch_url = 'http://www.smskb.com/train/'  
    
    
    def scratch_train_station(scratch_url, old_stations):  
        new_stations = []  
        provinces_eng = (  
            "Anhui", "Beijing", "Chongqing", "Fujian", "Gansu", "Guangdong", "Guangxi", "Guizhou", "Hainan", "Hebei",  
            "Heilongjiang", "Henan", "Hubei", "Hunan", "Jiangsu", "Jiangxi", "Jilin", "Liaoning", "Ningxia", "Qinghai",  
            "Shandong", "Shanghai", "Shanxi", "Shanxisheng", "Sichuan", "Tianjin", "Neimenggu", "Xianggang", "Xinjiang",  
            "Xizang",  
            "Yunnan", "Zhejiang")  
        provinces_chi = (  
            "安徽", "北京", "重庆", "福建", "甘肃", "广东", "广西", "贵州", "海南", "河北",  
            "黑龙江", "河南", "湖北", "湖南", "江苏", "江西", "吉林", "辽宁", "宁夏", "青海",  
            "山东", "上海", "陕西", "山西", "四川", "天津", "内蒙古", "香港", "新疆", "西藏",  
            "云南", "浙江")  
        for i in range(0, provinces_eng.__len__(), 1):  
            cur_url = scratch_url + provinces_eng[i] + ".htm"  
            resp = requests.get(cur_url)  
            data = resp.text.encode(resp.encoding).decode('gbk')  
            soup = bs4.BeautifulSoup(data, "html.parser")  
            a_stations = soup.find('left').find('table').find_all('a')  
            for station in a_stations:  
                if station.text not in old_stations:  
                    new_stations.append(provinces_chi[i] + ',' + station.text)  
        return new_stations  
    
    
    if __name__ == '__main__':  
        MainUtil.main(resources_file_path, scratch_url, scratch_train_station)
    

    将项目放到测试服务器(centos7系统)中运行起来,我写了一个crontab,定时调用他们,下面贴出crontab。

    /etc/crontab

    SHELL=/bin/bash  
    PATH=/sbin:/bin:/usr/sbin:/usr/bin  
    MAILTO=root  
    
    # For details see man 4 crontabs  
    
    # Example of job definition:  
    # .---------------- minute (0 - 59)  
    # |  .------------- hour (0 - 23)  
    # |  |  .---------- day of month (1 - 31)  
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...  
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat  
    # |  |  |  |  |  
    # *  *  *  *  * user-name  command to be executed  
      0  0  *  *  * root python3 /data/app/smart/py/scratch_movie_name.py    >> /data/logs/smartpy/out.log 2>&1  
      0  1  *  *  1 root python3 /data/app/smart/py/scratch_train_station.py >> /data/logs/smartpy/out.log 2>&1  
      0  2  *  *  2 root python3 /data/app/smart/py/scratch_train_number.py  >> /data/logs/smartpy/out.log 2>&1  
      0  3  *  *  4 root python3 /data/app/smart/py/scratch_flight_number.py >> /data/logs/smartpy/out.log 2>&1  
      0  4  *  *  5 root python3 /data/app/smart/py/scratch_airport_name.py  >> /data/logs/smartpy/out.log 2>&1
    

    后续

    目前项目已经正常运行了三个多月啦。。。

    有问题反馈

    在阅读与学习中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

    • 微信公众号:裸睡的猪
    • 在下面留言
    • 直接给我私信

    关于此公众号

    • 后期或提供各种软件的免费激活码
    • 推送python,java等编程技术文章和面试技巧
    • 当然你们可以将你们感兴趣的东西直接送给我
    • 谢谢你们真诚的关注,此公众号以后获得的收益将全部通过抽奖的形式送给大家
    • 以后如果博主要创业的话,也会在此公众号中挑选小伙伴哦~
    • 希望大家分享出去,让更多想学习python的朋友看到~

     

     

    展开全文
  • Q3:如何使用Python读取大文件?我先假设题主问的大文件在1G~20G左右,这应该算常规的大文件。平常我在做机器学习模型时候我喜欢先在本机上做玩具模型,里面有个步骤就是经常要读取文件数据,也差不多这么一个数据量...
  • Python项目运行环境搭建

    千次阅读 2020-05-20 13:32:44
    本文档是采用virtualenv+gunicorn+flask 一.安装nginx 把安装包解压到指定文件夹即可,不做细讲 二.安装python 1.解压:Python-3.7.0.tar.xz .tar -vxf Python-3.7.0.tar.xz ...5.建立python3的软链接
  • Python运行有两个方式,一个是Python交互式模式;一种是直接运行.py文件。第一种 Python交互式模式在cmd下输入python即进入。在命令行模式下,可以执行python进入Python交互式环境。看到>>>是在Python交互式环境下:...
  • Python 技术篇-将python项目打包成exe独立运行程序,pyinstaller库打包python代码实例演示。 cmd 进入要编译的python文件所在的文件夹, 然后pyinstaller -F hello.py就好了,hello.py就是我要打包的文件。 常用参数...
  • 使用pycharm创建并运行python的django项目(工具内) 前言 今天开始博主开始学习Python编程,记录下点滴进步分享给大家,快点点赞这个帅比–佳佳! 配置并准备你的环境 首先,在设置里面选择好环境,这里...
  • Linux下python项目运行步骤

    万次阅读 2015-09-07 18:21:08
    刚刚认识python,确实遇到了好多好多的坑,特意记下这些一步一步走来步进的坑与问题,以后还可以查阅。如还有坑,希望指教。 1 . pip pip 是Python的包管理工具,在新发行的版本中会默认安装 在命令行下输入 pip...
  • 运行一个python项目的步骤

    千次阅读 2015-08-10 18:10:04
    运行环境:workon 项目名 进入文件夹:cd:git/web/项目名 启动数据库:mongo-start 启动成功: about to fork child process, waiting until server is ready for connections. forked process:
  • 项目python3的,靠virtualenv来创建的虚拟环境。(项目名称AAA吧) 在服务器安装好supervisor之后 先通过下面的语句生成配置文件(路径就是AAA的根目录下)echo_supervisord_conf > supervisord.conf然后打开...
  • 首先,创建好python的 docker 镜像,关于docker 怎么使用等问题,本文不做过多叙述,可以根据docker文档进行学习,废话不多说. PyCharm 打开 settings ...编辑设置运行环境,如图: 到此,PyCharm使用docker镜像做python+...
  • 使用pycharm将python项目打包成exe运行文件

    万次阅读 多人点赞 2019-08-24 11:33:55
    对于python3,将完成的python工程打包成exe运行,需要用到pyinstaller模块,具体操作方法如下: 一、安装pyinstaller模块 2、打包 选择控制台Terminal 输入 pyinstaller -F XXXX.py /** *附参数集合: –icon=...
  • Win7 Eclipse 运行 Python Scrapy爬虫项目

    千次阅读 2014-12-03 22:36:39
    在Eclipse下开发python scrapy项目的几个操作 ------新建Scrapy 项目------ windows cmd下,cd 到 Eclipse WorkSpace 目录下,执行命令: scrapy startproject project_name ,一个Scrapy项目就在work space...
  • Python项目管理

    千次阅读 2015-12-27 11:45:40
    那么当一台机器上有多个python项目,且这些python项目各自有不同的依赖,不想互相干扰时怎么办呢? 官方做法是使用Virtual Environments将每个项目互相隔离开。一般情况下,我们使用python解释器运行python脚本或...
  • 在django项目中,单独运行python文件

    千次阅读 2017-08-31 10:11:19
    如果python文件涉及到数据库之类的代码,单独运行python文件会报错 django.core.exceptions.ImproperlyConfigured: Requested setting MEDIA_ROOT, but settings are not configured. You must either define the ...
  • vsCode运行python

    千次阅读 2018-11-28 20:46:18
    如何用VSCode愉快的写Python  在学习Python的过程中,一直没有找到比较趁手的第三方编辑器,用的最多的还是Python自带的编辑器。由于本人用惯了宇宙第一IDE(Visual Studio),所以当Visual Studio Code出现时,...
  • 步骤1:创建并运行您的第一个Python项目 在你开始之前 确保满足以下先决条件: 您正在使PyCharmCE或Professional。 您已经安装了Python本身。如果您使用的是macOS或Linux,那么您的计算机已经安装了Python。你...
  • 命令行运行python程序

    万次阅读 2018-07-09 09:42:32
    对于新入门的小白来说,学习python的第一步就是如何在命令行中运行python程序。 1. 配置环境变量(必须)。请自行百度。 2.
  • 初学python,如何运行项目代码

    千次阅读 2020-03-18 21:08:08
    对于新手,到手一个python项目源码,需要学习、阅读或运行,常常遇到许多莫名其妙的问题。对于具体的问题,在百度上也许能搜索到许多解决方案,但有的表达不清,有的未必有效。本文试图做出步骤性的总结,希望对新手...
  • Python项目打包发布方法

    万次阅读 多人点赞 2018-12-29 11:56:07
    目前python打包工具有多个,目前比较好用的为pyinstaller,该工具可以支持在window和linux下使用。 在windows下,大小为几十K的源文件打包成exe文件,可能为几十兆,原因是把程序所引用的库文件也一起打包在一起。...
  • 本文以django项目为例,演示docker镜像的制作过程。 一.目录结构: ├─base_img │ ├─Dockerfile //django项目镜像的Dockerfile ...│ ├─python_agency │ ├─manage.py │ ├─requirements.txt │ ├─db
  • Python学习笔记之三——如何运行Python程序

    万次阅读 多人点赞 2016-08-04 13:14:15
    如何运行Python程序
  • 您正在使用 PyCharm,那么该如何创建并运行您的第一个Python项目?在你开始之前#确保满足以下先决条件:您正在使用 PyCharm CE或Professional。您已经安装了Python本身。如果您使用的是macOS或Linux,那么您的...
  • qpython3:安卓上运行Python

    万次阅读 2018-11-07 16:24:29
    简介 QPython3是一个在Android上运行Python3脚本引擎,它整合了Python3解释...此外,它提供了开发工具能让你在Android设备上方便地开发Python项目。 还有另外一个版本QPython,支持Python2.7。 【主要功能】 支持A...
  • python可以在手机上运行吗?python可以在手机上运行。...它可以使你的Android设备运行Python脚本或项目,它是完全免费的,另有一款软件名为QPython Lite,是QPython+的精简版。QPython+主要功能特点:可从QR码...
  • 问一个入门问题。项目readme里写了需要执行python setup.py install,这个是安装的意思吧,那我怎么运行这个程序呢![项目目录结构](https://img-ask.csdn.net/upload/201704/17/1492400306_847230.png)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 361,929
精华内容 144,771
关键字:

运行python项目

python 订阅