久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

        手機站
        千鋒教育

        千鋒學習站 | 隨時隨地免費學

        千鋒教育

        掃一掃進入千鋒手機站

        領取全套視頻
        千鋒教育

        關注千鋒學習站小程序
        隨時隨地免費學習課程

        當前位置:首頁  >  技術干貨  > 分享幾段有用的Python代碼

        分享幾段有用的Python代碼

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-11-06 17:45:54 1699263954

        今天分享幾段工作生活中常用的代碼,都是最為基礎的功能和操作,而且大多還都是出現(xiàn)頻率比較高的,很多都是可以拿來直接使用或者簡單修改就可以放到自己的項目當中。喜歡的記得收藏、關注、點贊。

        廢話不多說,我們開始吧!

        日期生成

        很多時候我們需要批量生成日期,方法有很多,這里分享兩段Python代碼:

        獲取過去N天的日期

        importdatetime

        defget_nday_list(n):

        before_n_days=[]

        foriinrange(1,n+1)[::-1]:

        before_n_days.append(str(datetime.date.today()-datetime.timedelta(days=i)))

        returnbefore_n_days

        a=get_nday_list(30)

        print(a)

        Output:

        ['2021-12-23','2021-12-24','2021-12-25','2021-12-26','2021-12-27',

        '2021-12-28','2021-12-29','2021-12-30','2021-12-31','2022-01-01',

        '2022-01-02','2022-01-03','2022-01-04','2022-01-05','2022-01-06',

        '2022-01-07','2022-01-08','2022-01-09','2022-01-10','2022-01-11',

        '2022-01-12','2022-01-13','2022-01-14','2022-01-15','2022-01-16',

        '2022-01-17','2022-01-18','2022-01-19','2022-01-20','2022-01-21']

        生成一段時間內的日期:

        importdatetime

        defcreate_assist_date(datestart=None,dateend=None):

        #創(chuàng)建日期輔助表

        ifdatestartisNone:

        datestart='2016-01-01'

        ifdateendisNone:

        dateend=datetime.datetime.now().strftime('%Y-%m-%d')

        #轉為日期格式

        datestart=datetime.datetime.strptime(datestart,'%Y-%m-%d')

        dateend=datetime.datetime.strptime(dateend,'%Y-%m-%d')

        date_list=[]

        date_list.append(datestart.strftime('%Y-%m-%d'))

        whiledatestart

        #日期疊加一天

        datestart+=datetime.timedelta(days=+1)

        #日期轉字符串存入列表

        date_list.append(datestart.strftime('%Y-%m-%d'))

        returndate_list

        d_list=create_assist_date(datestart='2021-12-27',dateend='2021-12-30')

        d_list

        Output:

        ['2021-12-27','2021-12-28','2021-12-29','2021-12-30']

        保存數(shù)據(jù)到CSV

        保存數(shù)據(jù)到CSV是太常見的操作了,分享一段我個人比較喜歡的寫法:

        defsave_data(data,date):

        ifnotos.path.exists(r'2021_data_%s.csv'%date):

        withopen("2021_data_%s.csv"%date,"a+",encoding='utf-8')asf:

        f.write("標題,熱度,時間,url\n")

        foriindata:

        title=i["title"]

        extra=i["extra"]

        time=i['time']

        url=i["url"]

        row='{},{},{},{}'.format(title,extra,time,url)

        f.write(row)

        f.write('\n')

        else:

        withopen("2021_data_%s.csv"%date,"a+",encoding='utf-8')asf:

        foriindata:

        title=i["title"]

        extra=i["extra"]

        time=i['time']

        url=i["url"]

        row='{},{},{},{}'.format(title,extra,time,url)

        f.write(row)

        f.write('\n')

        帶背景顏色的Pyecharts

        Pyecharts作為Echarts的優(yōu)秀Python實現(xiàn),受到眾多開發(fā)者的青睞,用Pyecharts作圖時,使用一個舒服的背景也會給我們的圖表增色不少。

        以餅圖為例,通過添加JavaScript代碼來改變背景顏色:

        defpie_rosetype(data)->Pie:

        background_color_js=(

        "newecharts.graphic.LinearGradient(0,0,0,1,"

        "[{offset:0,color:'#c86589'},{offset:1,color:'#06a7ff'}],false)"

        )

        c=(

        Pie(init_opts=opts.InitOpts(bg_color=JsCode(background_color_js)))

        .add(

        "",

        data,

        radius=["30%","75%"],

        center=["45%","50%"],

        rosetype="radius",

        label_opts=opts.LabelOpts(formatter=":{c}"),

        )

        .set_global_opts(title_opts=opts.TitleOpts(title=""),

        )

        )

        returnc

        requests庫調用

        據(jù)統(tǒng)計,requests庫是Python家族里被引用得最多的第三方庫,足見其江湖地位之高大!

        發(fā)送GET請求:

        importrequests

        headers={

        'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/96.0.4664.110Safari/537.36',

        'cookie':'some_cookie'

        }

        response=requests.request("GET",url,headers=headers)

        發(fā)送POST請求:

        importrequests

        payload={}

        files=[]

        headers={

        'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/96.0.4664.110Safari/537.36',

        'cookie':'some_cookie'

        }

        response=requests.request("POST",url,headers=headers,data=payload,files=files)

        根據(jù)某些條件循環(huán)請求,比如根據(jù)生成的日期

        defget_data(mydate):

        date_list=create_assist_date(mydate)

        url="https://test.test"

        files=[]

        headers={

        'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/96.0.4664.110Safari/537.36',

        'cookie':''

        }

        fordindate_list:

        payload={'p':'10',

        'day':d,

        'nodeid':'1',

        't':'itemsbydate',

        'c':'node'}

        foriinrange(1,100):

        payload['p']=str(i)

        print("getdataof%sinpage%s"%(d,str(i)))

        response=requests.request("POST",url,headers=headers,data=payload,files=files)

        items=response.json()['data']['items']

        ifitems:

        save_data(items,d)

        else:

        break

        Python操作各種數(shù)據(jù)庫

        操作Redis

        連接Redis

        importredis

        defredis_conn_pool():

        pool=redis.ConnectionPool(host='localhost',port=6379,decode_responses=True)

        rd=redis.Redis(connection_pool=pool)

        returnrd

        寫入Redis

        fromredis_connimportredis_conn_pool

        rd=redis_conn_pool()

        rd.set('test_data','mytest')

        操作MongoDB

        連接MongoDB

        frompymongoimportMongoClient

        conn=MongoClient("mongodb://%s:%s@ipaddress:49974/mydb"%('username','password'))

        db=conn.mydb

        mongo_collection=db.mydata

        批量插入數(shù)據(jù)

        res=requests.get(url,params=query).json()

        commentList=res['data']['commentList']

        mongo_collection.insert_many(commentList)

        操作MySQL

        連接MySQL

        importMySQLdb

        #打開數(shù)據(jù)庫連接

        db=MySQLdb.connect("localhost","testuser","test123","TESTDB",charset='utf8')

        #使用cursor()方法獲取操作游標

        cursor=db.cursor()

        執(zhí)行SQL語句

        #使用execute方法執(zhí)行SQL語句

        cursor.execute("SELECTVERSION()")

        #使用fetchone()方法獲取一條數(shù)據(jù)

        data=cursor.fetchone()

        print"Databaseversion:%s"%data

        #關閉數(shù)據(jù)庫連接

        db.close()

        Output:

        Databaseversion:5.0.45

        本地文件整理

        整理文件涉及需求的比較多,這里分享的是將本地多個CSV文件整合成一個文件。

        importpandasaspd

        importos

        df_list=[]

        foriinos.listdir():

        if"csv"ini:

        day=i.split('.')[0].split('_')[-1]

        df=pd.read_csv(i)

        df['day']=day

        df_list.append(df)

        df=pd.concat(df_list,axis=0)

        df.to_csv("total.txt",index=0)

        多線程代碼

        多線程也有很多實現(xiàn)方式,我們選擇自己最為熟悉順手的方式即可。

        importthreading

        importtime

        exitFlag=0

        classmyThread(threading.Thread):

        def__init__(self,threadID,name,delay):

        threading.Thread.__init__(self)

        self.threadID=threadID

        self.name=name

        self.delay=delay

        defrun(self):

        print("開始線程:"+self.name)

        print_time(self.name,self.delay,5)

        print("退出線程:"+self.name)

        defprint_time(threadName,delay,counter):

        whilecounter:

        ifexitFlag:

        threadName.exit()

        time.sleep(delay)

        print("%s:%s"%(threadName,time.ctime(time.time())))

        counter-=1

        #創(chuàng)建新線程

        thread1=myThread(1,"Thread-1",1)

        thread2=myThread(2,"Thread-2",2)

        #開啟新線程

        thread1.start()

        thread2.start()

        thread1.join()

        thread2.join()

        print("退出主線程")

        異步編程代碼

        異步爬取網(wǎng)站

        importasyncio

        importaiohttp

        importaiofiles

        asyncdefget_html(session,url):

        try:

        asyncwithsession.get(url=url,timeout=8)asresp:

        ifnotresp.status//100==2:

        print(resp.status)

        print("爬取",url,"出現(xiàn)錯誤")

        else:

        resp.encoding='utf-8'

        text=awaitresp.text()

        returntext

        exceptExceptionase:

        print("出現(xiàn)錯誤",e)

        awaitget_html(session,url)

        使用異步請求之后,對應的文件保存也需要使用異步,即是一處異步,處處異步。

        asyncdefdownload(title_list,content_list):

        asyncwithaiofiles.open('{}.txt'.format(title_list[0]),'a',

        encoding='utf-8')asf:

        awaitf.write('{}'.format(str(content_list)))

        以上就是我平時用得最多的代碼片段,希望對你有所幫助。

        以上內容為大家介紹了分享幾段有用的Python代碼,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注多測師。http://www.2667701.com/xwzx/

        tags: python培訓
        聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
        10年以上業(yè)內強師集結,手把手帶你蛻變精英
        請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
        免費領取
        今日已有369人領取成功
        劉同學 138****2860 剛剛成功領取
        王同學 131****2015 剛剛成功領取
        張同學 133****4652 剛剛成功領取
        李同學 135****8607 剛剛成功領取
        楊同學 132****5667 剛剛成功領取
        岳同學 134****6652 剛剛成功領取
        梁同學 157****2950 剛剛成功領取
        劉同學 189****1015 剛剛成功領取
        張同學 155****4678 剛剛成功領取
        鄒同學 139****2907 剛剛成功領取
        董同學 138****2867 剛剛成功領取
        周同學 136****3602 剛剛成功領取
        相關推薦HOT
        余姚市| 阿克陶县| 黑水县| 专栏| 南安市| 呼和浩特市| 定边县| 北辰区| 临江市| 宁陕县| 剑阁县| 延吉市| 饶平县| 昌吉市| 岳普湖县| 通山县| 南宫市| 获嘉县| 靖远县| 康马县| 尼木县| 讷河市| 天全县| 资溪县| 金坛市| 肃宁县| 信阳市| 福泉市| 岱山县| 临海市| 东山县| 乐陵市| 沭阳县| 宁安市| 富川| 自治县| 汉寿县| 长春市| 红安县| 璧山县| 安多县|