Python腳本開發練習


打印乘法口訣表

#!/usr/bin/python
#coding=utf-8

print("Hello,World....")
print("你好,歡迎來到Python的世界....")

i=1;
while i <= 9 :
    #print i
    j=1
    while j <= i:
        #print i,j
        print "%d*%d=%d"%(j,i,j*i),
        j+=1
    print('\n')
    i+=1

結果:

 

Python文件處理

#!/usr/bin/python
#coding=utf-8
import sys
import os
import shutil

#創建目錄
def mkdir(path):
    #去除首位空格
    path = path.strip()
    #去除尾部\符號
    path = path.rstrip('\\') 
    #判斷路徑是否存在
    isExists = os.path.exists(path)
    if not isExists:
       os.makedirs(path)

#寫文件
def Write(filename,context,model):
    #去除首位空格
    filename = filename.strip()
    #讀取目錄名稱
    path = os.path.dirname(filename)
    #如果目錄不存在則創建目錄
    mkdir(path)
    #讀取文件名稱
    name = os.path.basename(filename)
    fp = open(filename,model)
    fp.write(context+'\n')
    fp.close()
    print name

#刪除文件
def deleteFile(filename):
    filename = filename.strip()
    if os.path.exists(filename):
       os.remove(filename)

#刪除目錄
def deleteDir(path,model):
    if os.path.exists(path):
       if model == 'rf':
          #強制刪除目錄以及目錄下所有文件
          shutil.rmtree(path)
       else:
          #只有目錄為空的時候才可以刪除
          os.removedirs(path)
mkdir('/etl/etldata/tmp/p')
deleteDir('/etl/etldata/tmp','rf')
mkdir('/etl/etldata/script/python/test')
Write('/etl/etldata/script/python/p/testfile.csv','1','w');
Write('/etl/etldata/script/python/p/testfile.csv','2','a');
#deleteFile('/etl/etldata/script/python/p/testfile.csv')
deleteDir('/etl/etldata/script/python/p','rf')
#deleteDir('/etl/etldata/script/python1/test','rf')

 Python面向對象

#定義Student類
class Student:

    #定義getName方法,獲取姓名
    def getName(self):
        print("My Name is Jim")
    #定義getAge方法,獲取年齡
    def getAge(self):
        print("My Age is 18")

#實例化一個對象
s = Student()
s.getName()
s.getAge()

#添加屬性
s.addres = '大連'
#獲取屬性
print(s.addres)

 

 

#coding:utf-8

#print("Hello,world")

#定義Student類
class Student:

    #定義初始化函數
    def __init__(self,name="InitName",weight=60,height=170):
        self.name = name
        self.weight = weight
        self.height = height
        self.age = 18.6

    def __str__(self):
        return self.name

    #定義getName方法,獲取姓名
    def getName(self):
        print("My Name is %s" % (self.name) )
    #定義getAge方法,獲取年齡
    def getAge(self):
        print("My Age is %f" % (self.age))

#實例化一個對象
s = Student('Jim')
print type(s)
s.getName()
s.getAge()
print(s.weight)
print(s)

 

#coding:utf-8
import xlrd
import os
import sys 
import cx_Oracle
import time
import sys
import codecs
import shutil
reload(sys)
sys.setdefaultencoding('utf-8')

#定義連接oracle數據庫函數
def conn_orcl(hostname='192.168.0.18',user='jim',passwd='jim',database='orcl'):
    print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),": Start connect to Oracle..."
    #user
    #passwd
    #hostname = 192.168.0.18 
    #database = 'orcl'
    conn_str=user+'/'+passwd+'@'+hostname+'/'+database
    try:
        conn = cx_Oracle.connect(conn_str)
    #conn = cx_Oracle.connect('scott/tiger1@192.168.0.18/orcl')
        print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),": connect to %s Succeed" % (database)
        return conn
    except:
        print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),": Connect to %s Failed" % (database)
        return
        
#執行sql語句【增加、刪除、修改】       
def sqlDML(sql,db):
    #include: insert,update,delete
    cr = db.cursor()
    try:
        cr.execute(sql)
        cr.close()
        db.commit()
        print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),": Excute Succeed"
    except:
        print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),": Excute Failed"
        
#查詢語句,返回元組tuple
def sqlSelect(sql,db):
    c = db.cursor()
    try:
        c.execute(sql)
        print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),": Excute Succeed"
        return c
    except:
        print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),": Excute Failed"
        return 

#創建目錄
def mkdir(path):
    #去除首位空格
    path = path.strip()
    #去除尾部\符號
    path = path.rstrip('\\') 
    #判斷路徑是否存在
    isExists = os.path.exists(path)
    if not isExists:
       os.makedir(path)

#遞歸創建目錄
def mkdirs(path):
    #去除首位空格
    path = path.strip()
    #去除尾部\符號
    path = path.rstrip('\\') 
    #判斷路徑是否存在
    isExists = os.path.exists(path)
    if not isExists:
       os.makedirs(path)

#刪除目錄
def rmdir(path):
    #去除首位空格
    path = path.strip()
    #去除尾部\符號
    path = path.rstrip('\\') 
    #判斷路徑是否存在
    isExists = os.path.exists(path)
    if isExists:
       os.rmdir(path)

#遞歸刪除目錄
def rmdirs(path):
    #去除首位空格
    path = path.strip()
    #去除尾部\符號
    path = path.rstrip('\\') 
    #判斷路徑是否存在
    isExists = os.path.exists(path)
    if isExists:
       #os.removedirs(path)
       shutil.rmtree(path)

#刪除文件
def deleteFile(filename):
    filename = filename.strip()
    if os.path.exists(filename):
       os.remove(filename)    

#寫文件
def writeText(filename,context,model):
    #去除首位空格
    filename = filename.strip()
    #讀取目錄名稱
    path = os.path.dirname(filename)
    #如果目錄不存在則創建目錄
    mkdir(path)
    #讀取文件名稱
    name = os.path.basename(filename)
    fp = open(filename,model)
    fp.write(context+'\n')
    fp.close()
    
def excel_to_csv(exclefilename,sheetname,csvfilename):
    data = xlrd.open_workbook(exclefilename)
    table = data.sheet_by_name(sheetname)
    print "excel文件為:%s" % (exclefilename)
    print "sheet頁名稱為:%s" %(sheetname)
    #獲取行數和列數
    nrows = table.nrows
    print "行數:",nrows
    
    ncols = table.ncols
    print "列數:", ncols
    
    #定義分割符
    format = ','
    #先刪除目標csv文件
    deleteFile(csvfilename)
    #默認去掉首行標題
    for i in range(1,nrows):
        s=''
        for j in range(0,ncols):
            s = s + str(table.row_values(i)[j]) + format
            #print table.row_values(i)[j]
        #print s
        #保存成csv文件
        writeText(csvfilename,s,'a')
    print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),": translate %s to %s Succeed" % (exclefilename,csvfilename)
        #print table.row_values(i)[0]


#將數據文件加載到oracle數據庫中
def load_to_db(db,filename,tabname,colnum):
    s=''
    for i in range(1,colnum+1):
        if i == colnum:
           s = s + ':' + str(i)
        else:
           s = s + ':' + str(i) + ','
    sql = 'insert into %s values(%s)' %(tabname,s)
    print sql
    cr = db.cursor()
    f =  codecs.open(filename)
    lines = f.readlines()
    
    for i in range(0,len(lines)):
        s = []
        for j in range(0,colnum):
            s.append(str(lines[i].strip("\n").split(',')[j]))
            #print s[j]
        #lines[i].strip("\n").split(',')[0]
        cr.execute(sql,s)
        #print s
        f.close() 
    cr.close()
    db.commit()

excel_to_csv('/etl/etldata/script/car/20170920.xlsx','標簽','/etl/etldata/script/python_test/lab.csv')       
db = conn_orcl('192.168.11.43','jim','jim')
sql = 'delete from car_lab'    
sqlDML(sql,db)    
load_to_db(db,'/etl/etldata/script/python_test/lab.csv','car_lab',12)



#db = conn_orcl('192.168.11.43','jim','jim')
#sql = 'create table car_info_1 as select * from car_info where 1=2'
#sql = 'select * from car'
#c = sqlSelect(sql,db)
#print type(c)

#excel_to_csv('/etl/etldata/script/car/20170919.xlsx','太平洋汽車','/etl/etldata/script/python_test/lab.csv')

'''
for x in c :
       #返回的是元組tuple
       print type(x),len(x)
       print x[0],x[1],x[2],x[3]
'''       
#sqlDML(sql,db)
#data = xlrd.open_workbook('car.xlsx')

#通過名稱獲取
#table = data.sheet_by_name(u'Sheet3')

#通過索引順序獲取
#table = data.sheets()[0]

#通過索引順序獲取
#table = data.sheet_by_index(0)

#獲取整行和整列的值(數組)
#table.row_values(i)
#table.col_values(i)

#獲取行數和列數
#nrows = table.nrows
#ncols = table.ncols

 Python常用函數收集匯總:

#coding:utf-8
#filename:tools.py
#pyton常用函數收集匯總
import time
import sys
import os
import shutil
reload(sys)
sys.setdefaultencoding( "utf-8" )


#獲取常用時間格式的函數
#'%Y-%m-%d' 2017-11-18
#'%Y%m%d'   20171118
#%Y%m%d%H'  2017111817
#空或其他   2017-11-18 17:26:35
def getTime(*format):
    now = ''
    try:
        format = format[0]
    except :
        pass 
    if format == '%Y-%m-%d':
        now = time.strftime('%Y-%m-%d',time.localtime(time.time()))
    elif format == '%Y%m%d':
        now = time.strftime('%Y%m%d',time.localtime(time.time()))
    elif format == '%Y%m%d%H':
        now = time.strftime('%Y%m%d%H',time.localtime(time.time()))
    else :
        now = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    return now 
    

#創建目錄
def mkdir(path):
    #去除首位空格
    path = path.strip()
    #去除尾部\符號
    path = path.rstrip('\\') 
    #判斷路徑是否存在
    isExists = os.path.exists(path)
    if not isExists:
       os.makedirs(path)

#寫字符到到文件中
def writeFile(filename,context,model):
    #去除首位空格
    filename = filename.strip()
    #讀取目錄名稱
    path = os.path.dirname(filename)
    #如果目錄不存在則創建目錄
    mkdir(path)
    #讀取文件名稱
    name = os.path.basename(filename)
    fp = open(filename,model)
    fp.write(context+'\n')
    fp.close()
    #print name

#刪除文件
def deleteFile(filename):
    filename = filename.strip()
    if os.path.exists(filename):
       os.remove(filename)
         
#刪除目錄
def deleteDir(path,model):
    if os.path.exists(path):
       if model == 'rf':
          #強制刪除目錄以及目錄下所有文件
          shutil.rmtree(path)
       else:
          #只有目錄為空的時候才可以刪除
          os.removedirs(path)
          
#判斷文件是否存在
def isExistsFile(filename):
    result = False
    result = os.path.isfile(filename)
    return result
    
#讀取文件內容
def getLines(filename):
    file_object = open(filename,'rb')
    lines = file_object.readlines()
    return lines

#獲取本身腳本名稱
def getSelfName():
    return sys.argv[0]
    
print getSelfName()

 

from selenium import webdriver
from pyquery import PyQuery as pq

#獲取網頁 urllib2獲取
def getHtml(url):
    request = urllib2.Request(url)
    response = urllib2.urlopen(request,data=None)
    #html = unicode(response.read(),'utf-8')
    html = unicode(response.read(),'gbk')
    return html

    
#獲取網頁 PhantomJS獲取
def getHtml2(url):
    driver = webdriver.PhantomJS(executable_path='/home/shutong/phantomjs/bin/phantomjs')
    driver.get(url)
    html = driver.page_source 
    driver.quit()
    return html 

 Python操作phantomjs

#coding:utf-8
import os
import re
import sys
import time
sys.path.append('/home/shutong/crawl/script/media') 
from tools import *
#import tushare as ts
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

reload(sys)
sys.setdefaultencoding('utf-8')


driver = webdriver.PhantomJS()
url = "https://www.baidu.com/"
driver.get(url)
driver.get_screenshot_as_file('1.png')
elem = driver.find_element_by_id("kw")
elem.send_keys(u"北京")
driver.get_screenshot_as_file('2.png')
elem.send_keys(Keys.RETURN)
time.sleep(5)
driver.refresh()
driver.get_screenshot_as_file('3.png')

Python常用工具函數

#coding:utf-8
#filename:tools.py
#pyton常用函數收集匯總
import time
import sys
import os
import shutil
import MySQLdb
import urllib2
from pyquery import PyQuery as pq
from lxml import etree
import urllib
import sys 
import httplib
import datetime
import json
from selenium import webdriver
from urlparse import urljoin 
httplib.HTTPConnection._http_vsn = 10
httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0'

#設置utf-8模式
reload(sys)
sys.setdefaultencoding( "utf-8" )


#獲取常用時間格式的函數
#'%Y-%m-%d' 2017-11-18
#'%Y%m%d'   20171118
#%Y%m%d%H'  2017111817
#空或其他   2017-11-18 17:26:35
def getTime(*format):
    now = ''
    try:
        format = format[0]
    except :
        pass 
    if format == '%Y-%m-%d':
        now = time.strftime('%Y-%m-%d',time.localtime(time.time()))
    elif format == '%Y%m%d':
        now = time.strftime('%Y%m%d',time.localtime(time.time()))
    elif format == '%Y%m%d%H':
        now = time.strftime('%Y%m%d%H',time.localtime(time.time()))
    else :
        now = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    return now 
    
    
#創建目錄
def mkdir(path):
    #去除首位空格
    path = path.strip()
    #去除尾部\符號
    path = path.rstrip('\\') 
    #判斷路徑是否存在
    isExists = os.path.exists(path)
    if not isExists:
       #os.mkdirs(path)
       os.makedirs(path) 
#寫文件
def Write(filename,context,model):
    #去除首位空格
    filename = filename.strip()
    #讀取目錄名稱
    path = os.path.dirname(filename)
    #如果目錄不存在則創建目錄
    mkdir(path)
    #讀取文件名稱
    name = os.path.basename(filename)
    fp = open(filename,model)
    fp.write(context+'\n')
    fp.close()
    #print name
#寫字符到到文件中
def writeFile(filename,context,model):
    #去除首位空格
    filename = filename.strip()
    #讀取目錄名稱
    path = os.path.dirname(filename)
    #如果目錄不存在則創建目錄
    mkdir(path)
    #讀取文件名稱
    name = os.path.basename(filename)
    fp = open(filename,model)
    fp.write(context+'\n')
    fp.close()
    #print name

#刪除文件
def deleteFile(filename):
    filename = filename.strip()
    if os.path.exists(filename):
       os.remove(filename)
         
#刪除目錄
def deleteDir(path,model):
    if os.path.exists(path):
       if model == 'rf':
          #強制刪除目錄以及目錄下所有文件
          shutil.rmtree(path)
       else:
          #只有目錄為空的時候才可以刪除
          os.removedirs(path)
          
#判斷文件是否存在
def isExistsFile(filename):
    result = False
    result = os.path.isfile(filename)
    return result
    
#讀取文件內容
def getLines(filename):
    file_object = open(filename,'rb')
    lines = file_object.readlines()
    return lines
 
#處理字符
def repstr(name):
    name = str(name).replace('','(').replace('',')').replace(',',':')
    return str(name).strip() 
    
#保存字符串
def saveFile(filename,*name):
    format = ','
    context = repstr(name[0])
    for i in name[1:]:
        context = context + format + repstr(i)
    Write(filename,context,'a')

#保存字符串
def saveFile2(filename,*name):
    format = ','
    context = name[0]
    for i in name[1:]:
        context = context + format + str(i)
    context = str(context).replace('','(').replace('',')')
    Write(filename,context,'a')

#給數組去重
def uniqList(v_list):
    return list(set(v_list))

#獲取網頁函數1
def getHtml(url,*code):
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}  
    request = urllib2.Request(url,headers=headers)
    response = urllib2.urlopen(request,data=None,timeout=60)
    if code:
        if code[0] == 'gbk':
            html = unicode(response.read(),'gbk')
        else:
            html = unicode(response.read(),str(code[0]))
    else:
        html = unicode(response.read(),'utf-8')
    return html

#獲取網頁函數2
def getHtml_JS(url,*path):
    driver = ''
    if path:
       print path[0]
       driver = webdriver.PhantomJS(executable_path=path[0])
    else:
       driver = webdriver.PhantomJS(executable_path='/home/shutong/phantomjs/bin/phantomjs')
    #driver.set_page_load_timeout(60)
    driver.get(url)
    html = driver.page_source
    driver.quit()
    return html    


#定義MySql數據庫連接
def conn_mysql(host='192.168.11.43',user='root',passwd='root',db='edw'):
    conn = ''
    try:
        conn= MySQLdb.connect(
        host= host,
        port = 3306,
        user=user,
        passwd=passwd,
        db =db,
        )
        #print "連接mysql成功"
    except :
        #pass 
        print "連接mysql失敗"
    return conn

#執行sql語句返回結果    
def excute_sql(conn,sql):
    #conn = conn_mysql(host='192.168.122.194',user='root',passwd='123456',db='label')
    cur = conn.cursor()
    cur.execute('set character_set_client = utf8')
    cur.execute('set character_set_server = utf8')
    cur.execute('set character_set_connection = utf8')
    cur.execute('set character_set_results = utf8')
    cur.execute('set collation_connection = utf8_general_ci')
    cur.execute('set collation_server = utf8_general_ci')
    result = cur.fetchmany(cur.execute(sql))
    cur.close()
    conn.commit()
    conn.close()
    return result
    
    
#處理url
def process_url(url,url_value):
    if url_value.startswith('http://'):
        pass 
    else:
        url_value = urljoin(url,url_value)
    return str(url_value)
#參數:
#1.filename 輸出文件
#2.industry_id 行業ID
#3.url_type_id 
#4.v_url_name
#5.v_url_value
#6.web_type_id pc端[0]/移動端[1]
def process_data(inputfile,outputfile,industry_id,url_type_id,v_url_name,v_url_value,web_type_id):
    for line in getLines(inputfile):
        line = line.strip()
        url_name = ''
        url_value = ''
        web_type_id = str(web_type_id)
        web_name_id = line.split(',')[-2]
        date_id = line.split(',')[-1]
        #開始處理數據
        url_name = line.split(',')[v_url_name]
        url_value = str(line.split(',')[v_url_value]).replace('http://','')
        saveFile(outputfile,industry_id,url_type_id,url_name,url_value,web_type_id,web_name_id,date_id)

#獲取本身腳本名稱
def getSelfName():
    return sys.argv[0]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM