Python常见方法总结(方法封装)

1 文件移动并命名

import warnings
import pandas as pd
import shutil,os,re
warnings.filterwarnings('ignore')

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

#取年
Y = now_data.split('-')[0]
#取月
M =  now_data.split('-')[1]
#取日
D = now_data.split('-')[2]
#取时
H = now_data.split('-')[3]

# path1 下载的原数据路径
# path2 移动的数据路径
# file_name 数据保存的名字(file_name_time.csv)

path1 = 'C:/QYJ/Project/Database/chrome'
path2 = 'C:/QYJ/Project/Database/闪迪大师运营'
file_name = '闪迪大师竞店'

def move_file(path1,path2,file_name):
    data_names = os.listdir(path1) 
    shutil.move(path1+'/'+data_names[0],path2+'/'+file_name+'_'+now_data+'.csv')

move_file(path1,path2,file_name)

针对一些文件的移动(避免未下载),可以添加部分的异常检验操作!进行改进如下:

# path1 下载的原数据路径
# path2 移动的数据路径
# file_name 数据移动的名字(file_name_time.csv)

path1 = 'C:/Users/闪迪大师/Downloads/'
path2 = 'D:/Project/0_dataset/'
file_name = '店铺__流量看板_所有终端_统计时间 2022-05-15[小旺神:xiaowangshen.com].csv'

def move_file(path1,path2,file_name):
    file_list = os.listdir(path2)
    if file_name not in file_list:
        shutil.move(path1+'/'+file_name,path2+'/'+file_name)
        print('1 移动文件:' + file_name)
    else:
        print('0 文件存在:' + file_name)

2 删除空行和空列 或者前几行

# 列举删除空行的代码!
myshop_goods = pd.read_excel('D:\\Project\\0_dataset\\3_闪迪_商品_销售数据_2022_04_28.xls')

# 数据处理
# myshop_goods = myshop_goods.drop(range(4),axis=0) # 这是删除行数的情况
myshop_goods = myshop_goods.dropna(how='all',axis=0).reset_index(drop=True) # 删除空行
myshop_goods.columns = [i for i in myshop_goods.iloc[0,:]] # 改列名 -- 有一个参数可以直接选择第几列作为列名的!
myshop_goods = myshop_goods.iloc[1:][:].reset_index(drop=True) # 获取数据

3 批量获取文件

import warnings
warnings.filterwarnings('ignore')
import  pandas as pd
import re
import os

#数据探索
#1 获取所有文件的名称和路径
data_path = './data/'  #数据存储路径     !!!!!按需修改这里
data_names = os.listdir(data_path)  #列举出data_path里面所有的文件名称
data = pd.DataFrame([])
for data_name in data_names:
    # 删除不是的文件
    if data_name.endswith('.csv'): #  !!!!不同各格式  按需修改
        print((data_name))
        #3 循环读取文件
        tmp =pd.read_csv(os.path.join(data_path,data_name),encoding='gbk')
        #4 文件存储
        data = pd.concat([data,tmp])
#data = pd.read_csv('./data/订单表2018-5.csv',encoding='gbk')  #读取

4 得到前几天的日期

import datetime
def get_before_day(day, before):
    today = datetime.datetime.strptime(day, '%Y-%m-%d')
    offset = datetime.timedelta(days=-before)
    result = (today + offset).strftime('%Y-%m-%d')
    return result

get_before_day('2022-03-14', 1)
返回:'2022-03-13'

5 panda获取前天的日期

import datetime
import pandas as pd
def get_after_day(input_time,months,minutes,seconds):
    end_time = pd.to_datetime(input_time) + pd.DateOffset(months=months, minutes=minutes, seconds=seconds)
    end_time = end_time.strftime('%Y-%m-%d %H:%M:%S')
    return end_time

在这里插入图片描述

Python封装为类的方法有两个层面。第一层面的封装是指创建类和对象时,分别创建两者的名称,只能通过类名或者对象名加“.”的方式访问内部的成员和方法。这种封装方式在Python中是默认的,也是最常见封装方式。例如,在类中定义了私有变量和私有方法,只能通过类名或者对象名加“.”的方式来访问。\[1\] 第二层面的封装是指在类中把某些成员和方法隐藏起来,或者定义为私有,只在类的内部使用,在类的外部无法直接访问。这种封装方式可以通过在成员或方法的名称前加上双下划线来实现。这样定义的成员或方法就成为了私有的,只能在类的内部使用。但是,在Python中,实际上还是可以通过“_类名__属性”的方式来访问私有变量和方法。这种封装方式可以提高代码的安全性和可维护性,同时也可以隐藏内部实现的细节,使得类的使用更加简洁和易懂。\[1\] 总结起来,Python中的封装为类的方法包括第一层面的封装和第二层面的封装。第一层面的封装是默认的,通过类名或者对象名加“.”的方式访问内部的成员和方法。第二层面的封装是通过在成员或方法的名称前加上双下划线来实现,使其成为私有的,只能在类的内部使用。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [python之类的封装](https://blog.csdn.net/jiankang66/article/details/125675938)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值