import csv
with open("XXX.csv","a",newline="",encoding='utf-8') as datacsv: # a 是後續可以加入內容,w 參數則是覆蓋
#dialect爲打開csv文件的方式,默認是excel,delimiter="\t"參數指寫入的時候的分隔符
csvwriter = csv.writer(datacsv,dialect = ("excel"))
#csv文件插入一行數據,把下面列表中的每一項放入一個單元格(可以用循環插入多行)
csvwriter.writerow(["A","B","C","D"])
#小插曲
#讀取指定目錄下的菜單[文件和文件夾]
import os
alist = os.listdir('./') #當前目錄的文件夾和文件,返回值是列表
#get it!
利用 xlsxwriter,導出帶圖片的表格
def write(big_data,my_type):
workbook = xlsxwriter.Workbook("watch_band_%s.xlsx"%my_type)
for key in big_data:
# 從第二行開始,首行留給中文註釋
index = 2
data = big_data[key]
worksheet = workbook.add_worksheet(str(key))
# 參數理解: A1,A爲列的序列號,1則是行數
worksheet.write("A1", '排名')
worksheet.write("B1", 'ASIN')
worksheet.write("C1", '圖片')
worksheet.write("D1", '價格')
worksheet.write("E1", '評分')
worksheet.write("F1", '類別')
worksheet.write("G1", '鏈接')
worksheet.write("H1", '圖片鏈接')
worksheet.write("I1", '時間')
print(index)
for msg in data:
print(msg)
# 加寬第一列使文本更清晰。
worksheet.set_column('A:A', 30)
print('A' + str(index), '%s' % msg[-4])
worksheet.write('A' + str(index), '%s' % msg[-4])
worksheet.write("B" + str(index), "%s" % msg[2])
# 插入一張圖片。
filename='./band_img/%s.jpg' % msg[2]
try:
# 自定義方法
modify_img_site(filename)
worksheet.insert_image('C' + str(index),filename, {'x_scale': 0.5, 'y_scale': 0.5})
except:
worksheet.write('C' + str(index), 'none')
worksheet.write('D' + str(index), '%s' % msg[3])
worksheet.write('E' + str(index), '%s' % msg[4])
worksheet.write('F' + str(index), '%s' % msg[1])
worksheet.write('G' + str(index), 'https://www.amazon.com/dp/%s' % msg[2])
worksheet.write('H' + str(index), '%s' % msg[-1])
# worksheet.write('I' + str(index), '%s' % msg[-1])
# 插入一張位偏移圖片。
# worksheet.insert_image('B12', 'python.png', {'x_offset': 15, 'y_offset': 10})
# 插入一張縮放了的圖片。
# worksheet.write('23', '插入一張縮放了的圖片:')
# worksheet.insert_image('B23', 'python.png', {'x_scale': 0.5, 'y_scale': 0.5})
index += 1
workbook.close()
#讀取xls,xlsx文件?
import xlrd
ef xlrd_reader():
exce = xlrd.open_workbook('/home/yice/Documents/本尼維產品資料.xls')
# 獲取excel中對應的sheet
print('所有sheet名稱', exce.sheet_names()) # 獲取所有sheet名稱
sheets = exce.sheets() # 獲取所有sheets
# sheet = exce.sheets()[0] #也可以通過下標去訪問某個具體的sheet
sheet1 = exce.sheet_by_name('Sheet1') # 通過sheet名稱獲取
# sheet2 = exce.sheet_by_index(1) #通過下標獲取某個sheet
# 獲取sheet中行數和列數
nrows = sheet1.nrows
ncols = sheet1.ncols
print('對應sheet中行數:%d行,列數:%d列' % (nrows, ncols))
data=[]
for msg in range(nrows):
data.append(sheet1.row_values(msg))
# print(sheet1.row_values(msg))
# 獲取sheet中整行或整列的數據(數組)
# row1 = sheet1.row_values(3) # 通過下標獲取某一行的數據
# col1 = sheet1.col_values(0) # 通過下標獲取某一列的數據
# print('某行的數據:', row1)
# print('某列的數據:', col1)
#
# # 獲取sheet中某個單元格的數據
# cell_A3 = sheet1.cell(2, 0).value # 第三行第一列
# cell_B2 = sheet1.cell(1, 1).value # 第二行第二列
# cell_C3 = sheet1.cell(2, 2).value # 第三行第三列
# print('第一列第三行:', cell_A3)
# print('第二行第二列:', cell_B2)
# print('第三行第三列:', cell_C3)
#
# # 獲取單元格數據類型
# A3_ctype = sheet1.cell(2, 0).ctype # 數字類型
# B2_ctype = sheet1.cell(1, 1).ctype # str類型
# C3_ctype = sheet1.cell(2, 2).ctype # data類型
# print('數字類型:', A3_ctype)
# print('str類型:', B2_ctype)
# print('data類型:', C3_ctype)
return data