1. 程式人生 > >18-09-06天津 關於Excel的一些操作

18-09-06天津 關於Excel的一些操作

1 字串分後後一個返回值是個list  2個以上就是字串
a = '/sldj/fj/'
b ,c = a.strip('/').split('/')
print(b,c) # sldj fj

2關於os.listdir() 獲取目錄的檔案按照字母排序
# 針對於一個目錄下的檔案 (圖片等) 截圖完成後進行按時間排序 專案暫時沒用因為開始獲取也得截圖不移動永遠是第一個
# DIR = "E:\\fund_data\\imgsss" #[ 'uRWblBVj.png', 'XldRO9Cs.png','YkDsf08z.png']
# # 注意,這裡使用lambda表示式,將檔案按照最後修改時間順序升序排列
# os.path.getmtime() 函式是獲取檔案最後修改時間
# os.path.getctime() 函式是獲取檔案最後建立時間
# dir_list = os.listdir(DIR) #按照字母順序排序
# dir_list = sorted(dir_list,key=lambda x: os.path.getctime(os.path.join(DIR,x)))
# print(dir_list) #按照建立的時間排序['YkDsf08z.png', 'uRWblBVj.png', 'XldRO9Cs.png']

def move_pic(fund_name):
#時間獲取的昨天的時間並更換格式
now_time = datetime.datetime.now()
yesterday = now_time + datetime.timedelta(days=-1)
yesterday = yesterday.strftime('%Y%m%d')
newdir="E:\\fund_data\\"+fund_dir+"\\pic"+str(yesterday) #新目錄是PIC+日期
path = "E:\\fund_data\\imgsss\\" #臨時目錄

dirs_pic = os.listdir(path) #把獲取的圖片名字按字母排序 生成一個檔案排序的列表
#print(dirs_pic) []
#對以上獲取按字母排序的目錄檔案列表排序 以是按照建立時間對檔案排序
# oldfile_list=sorted(dirs_pic,key=lambda x: os.path.getctime(os.path.join(path,x
# )))
oldfile = path+oldfile_list[0] #路徑+檔名
# print("1oldfile======================================",oldfile)

#獲取臨時目錄下的檔案列表
# newfile = newdir+"\\"+fund_name+".jpg"
#新檔名字,bankname是傳入的引數
#print(oldfile)
#print(newfile)
if os.path.exists(newfile): #必須先判斷目標目錄是否存在檔案
os.remove(newfile)
os.rename(oldfile,newfile)


3關於glob.glob的用法比os 好用可以確定資料範圍類

fs = glob.glob(r'c:\temp\*.xlsx')
fs.sort(key=lambda fn: os.path.getmtime(fn) if not os.path.isdir(fn) else 0)
newest_file = fs[-1]
"""


import glob #glob模組用來查詢檔案目錄和檔案,常見的兩個方法有glob.glob()和glob.iglob(),
# 可以和常用的find功能進行類比,glob支援*?[]這三種萬用字元
# 以下是林總推薦的
# fs = glob.glob(r'c:\temp\*.xlsx')
# fs = glob.glob(r'E:\南京培訓資料2018-0813\*.docx')
# fs.sort(key=lambda fn: os.path.getmtime(fn) if not os.path.isdir(fn) else 0)
# newest_file = fs[0]
# print(newest_file)
# for i in fs:
# print(i)

# 4 關於os.walk 獲取路徑 資料夾 檔名等
#os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
# top -- 是你所要遍歷的目錄的地址, 返回的是一個三元組(root,dirs,files)。
# root 所指的是當前正在遍歷的這個資料夾的本身的地址
# dirs 是一個 list ,內容是該資料夾中所有的目錄的名字(不包括子目錄)
# files 同樣是 list , 內容是該資料夾中所有的檔案(不包括子目錄)

# 第一種:imgss 中只有幾張圖片沒有資料夾
# for i in os.walk(r"C:\Users\WY\Desktop\imgsss"):#
# # print(i)
# print("路徑",i[0])
# print("目錄",i[1]) #判斷裡面還有沒有資料夾
# print("子檔案",i[2])
# 路徑 C:\Users\WY\Desktop\imgsss
# 目錄 []
# 子檔案 ['1MX7eWUF.png', 'dha61HkL.png', 'QtqSWMRl.png', 'Ry0k3cbF.png', 'WbExuoDC.png']

# 第二種:imgss 中只有幾張圖片和資料夾11(目錄)

# for i in os.walk(r"C:\Users\WY\Desktop\imgsss"):#
# print("路徑",i[0])
# print("目錄",i[1]) #判斷裡面還有沒有資料夾 有就會遞迴操作迴圈出來
# print("子檔案",i[2])

# 路徑 C:\Users\WY\Desktop\imgsss
# 目錄 ['11']
# 子檔案 ['1MX7eWUF.png', 'dha61HkL.png', 'QtqSWMRl.png', 'Ry0k3cbF.png', 'WbExuoDC.png']
# 路徑 C:\Users\WY\Desktop\imgsss\11
# 目錄 []
# 子檔案 ['新建 WinRAR ZIP 壓縮檔案.zip', '新建點陣圖影象.bmp', '新建文字文件.txt']

# 第三種 三層以上所有路徑+名字
# C:\Users\WY\Desktop\imgsss\11\3\4 4
# for i in os.walk(r"C:\Users\WY\Desktop\imgsss"):#
# for j in i[2]:
# a_f= i[0]+"\\"+ j
# print(a_f)

# C:\Users\WY\AppData\Local\Programs\Python\Python36\python.exe E:/untitled1/Chatroom/app01/tests.py
# C:\Users\WY\Desktop\imgsss\1MX7eWUF.png
# C:\Users\WY\Desktop\imgsss\dha61HkL.png
# C:\Users\WY\Desktop\imgsss\QtqSWMRl.png
# C:\Users\WY\Desktop\imgsss\Ry0k3cbF.png
# C:\Users\WY\Desktop\imgsss\WbExuoDC.png
# C:\Users\WY\Desktop\imgsss\11\新建 WinRAR ZIP 壓縮檔案.zip
# C:\Users\WY\Desktop\imgsss\11\新建點陣圖影象.bmp
# C:\Users\WY\Desktop\imgsss\11\新建文字文件.txt
# C:\Users\WY\Desktop\imgsss\11\3\新建 Microsoft Word 文件.docx
# C:\Users\WY\Desktop\imgsss\11\3\新建 WinRAR 壓縮檔案.rar
# C:\Users\WY\Desktop\imgsss\11\3\4 4\4.bmp
# C:\Users\WY\Desktop\imgsss\11\3\4 4\4.txt

#5 獲取Excel 中每個sheet

# 獲取每一張excel表的sheet名稱 mypath_files (路徑+檔名)
# import pandas as pd
 def get_sheet(mypath):
df = pd.read_excel(mypath,None)
sheet_list = df.keys()
return sheet_list

# 6 python的包安裝的路徑 和自動化設計器的包的新增??????????????
# python 包的地址:C:\Users\WY\AppData\Local\Programs\Python\Python36\Lib\site-packages
# 藝賽琪設計器 C:\ueba\plugin\Com.Isearch.Func.Python\Lib\site-packages

#7 python 建立一個excel 表格 可以輸入一些資料
from xlwt import Workbook
def create(name):
import xlwt
book = Workbook(encoding='utf-8')

sheet1 = book.add_sheet('Sheet 1')

sheet1.write(0,0,"我是第一行第一列")
sheet1.write(0,1,"我是第一行第二列")

sheet1.write(1,0,"我是第2行第一列")
sheet1.write(1,1,"我是第2行第二列")

# 儲存Excel book.save('path/檔名稱.xls')
# book.save('E:/fund_data/Excel_datas/測試2018-09-06/ww.xls')
# book.save('E:/fund_data/Excel_datas/測試2018-09-06/%s.xls'% 'ccc')#替換表的名字 %s 方法
book.save('E:/fund_data/Excel_datas/測試2018-09-06/{}.xls'.format(name) )#替換表的名字format方法
create("傳引數")

====1建立一個當前時間的資料夾和在這個資料夾裡寫入一個自定義的Excel 檔案===

1建立目錄
def create_dir1(fund_dir):
now_time = datetime.datetime.now()
today = now_time + datetime.timedelta(days=0)
today = today.strftime('%Y-%m-%d')
newdir="E:\\fund_data\\"+fund_dir+"\\"+fund_dir+str(today)
if not os.path.exists(newdir):
os.makedirs(newdir)
print('====newdir====',newdir)
return newdir


def create_excel(fund_dir,fund_name):
newdir = create_dir1(fund_dir)
book = Workbook(encoding='utf-8')
sheet1 = book.add_sheet('Sheet 1')

#pycharm 寫法(/) book.save('E:/fund_data/Excel_datas/測試2018-09-06/{}.xls'.format(name) )#替換表的名字format方法

#設計器的寫法(\\) book.save(newdir+"\\{}.xls".format(fund_name))
book.save(newdir+"\\{}.xls".format(fund_name))

======2利用os.walk()來便利所有的當前路徑+檔名並set去重=====================================
import pandas as pd
import os
import xlrd
# 遞迴獲取檔名
xpath = r"C:\Users\WY\Desktop\imgsss"
xtype = "xls"
typedata = []
name = []
filename_list = []
raw_data = []
file_path = []

"""
def collect_xls(list_collect, type1):
# 取得列表中所有的type檔案
for each_element in list_collect:
if isinstance(each_element, list):
collect_xls(each_element, type1)
elif each_element.endswith(type1):
typedata.insert(0, each_element)
return typedata


# 讀取指定路徑下所有資料夾中的xls檔案
def read_xls():
# 遍歷路徑資料夾
for file in os.walk(xpath):#1返回當前檔案路徑 2目錄(資料夾)3當前檔案路徑下的檔案的列表
for each_list in file[2]:
file_path = file[0] + "\\" + each_list
# os.walk()函式返回三個引數:路徑,子資料夾,路徑下的檔案,利用字串拼接file[0]和file[2]得到檔案的路徑
print("=file_path=",type(file_path),file_path) #str url+xx.pbg
name.insert(0, file_path)
print("==name==",type(name),name) #str list
all_xls = collect_xls(name, xtype)
print(all_xls,'----------------')
all_xls = list(set(all_xls))
print('+++++++++++all_xls',type(all_xls),all_xls) #list

for filename in all_xls:
if '2018-9' in filename:
filename_list.append(filename)

# print('非本次所需檔案')
print(filename_list)
return filename_list

read_xls()

"""





# path = 'X:\\GS\\CNGS-WQ\\Logistics\\Common Logistic\\Packing list\\2018 packing list\\'
# traverse(path)

=======3獲取每一張excel表的sheet名稱====================
mypath = "C:\\Users\\WY\\Desktop\\imgsss\\00000000000000000000000000000.xls"
def get_sheet(mypath):
df = pd.read_excel(mypath, None)
sheet_list = df.keys()
print(sheet_list) #odict_keys(['Sheet1', 'Sheet2', 'Sheet3', 'Sheet4'])
return sheet_list
get_sheet(mypath)

======4寫入資料====================
def write_data(li, numa):
for x in li:
wb = xw.Book(r'C:/Users/jiang/Desktop/測試.xlsx')
sht = wb.sheets[0]
sht.range('A{0}'.format(numa)).value = x
wb.save()
numa += 1

print('測試*******', numa)
print('測試狀態:', numa)
return numa