文件操作

文件操作

日期和时间

  • time模块

    • time() 函数获取当前时间戳

    • time.sleep(seconds) 睡眠程序等待几秒钟

  • datetime模块

    • datetime.datetime.now() 获取当前日期和时间

    • strftime(format) 日期时间格式化

    • datetime.datetime.fromtimestamp(timestamp)将时间戳转换为日期时间

    • datetime.timedelta(时间间隔)返回一个时间间隔对象,通过时间间隔可以对时间进行加减法得到新的时间

      格式化符号

      说明

      %y

      两位数的年份表示(00~99)

      %Y

      思维说的年份表示(0000~9999)

      %m

      月份(01~12)

      %d

      月内中的一天(0~31)

      %H

      24小时制小时数(0~23)

      %I

      12小时制小时数(01~12)

      %M

      分钟数(00=59)

      %S

      秒(00~59)

time模块

import time
# 获取当前时间戳
print(time.time())# 从1970年到现在经历的秒数

# 程序等待
start_time = time.time()
print("----------")
time.sleep(2)# 程序等待
print("----------")
end_time = time.time()
print(end_time - start_time)

datetime模块

import datetime
print(datetime.datetime.now())
# 2018-05-17 20:11:59.104035
print(type(datetime.datetime.now()))
# <class 'datetime.datetime'>

# 日期格式化 string_formate
print(datetime.datetime.now().strftime("%Y/%m/%d %H/%M/%S"))
# 2018/05/17 20/11/59

计算时间差值

# 计算时间差值
import datetime, time
start_time = datetime.datetime.now()
time.sleep(5)
end_time = datetime.datetime.now()
print((end_time - start_time).seconds)

时间戳转换为日期

# 时间戳转换为日期
import datetime, time
ts = time.time()
print(ts)
print(datetime.datetime.fromtimestamp(ts))
print(datetime.datetime.fromtimestamp(ts).strftime("%Y-%m-%d"))

根据时间间隔,获取指定日期

# 根据时间间隔,获取指定日期
import datetime, time
today = datetime.datetime.today()
print(today.strftime("%Y-%m-%d %H-%M-%S"))
# 2018-05-17 20-22-56
delta_time = datetime.timedelta(days=1)
print(delta_time)
# 1 day, 0:00:00
yestoday = today - delta_time
print(yestoday.strftime("%Y-%m-%d %H-%M-%S"))
# 2018-05-16 20-22-56

文件操作

  • open(文件路径,访问模式,encoding=编码格式)方法打开一个已存在的文件,或者创建新的文件

  • close()方法关闭已打开的文件

  • 打开文件常用的三种访问模式

    • r:只读模式(默认)

    • w:只写模式

    • a:追加模式

  • write(data)方法向文件中写入字符串

    # 如果不存在则创建一个文件
    #相对路径
    f = open("test.txt", "w", encoding="utf-8")
    #绝对路径
    # f = open("d://test.txt", "w", encoding="utf-8")
    # 追加模式 a:append
    # f = open("test.txt", "a", encoding="utf-8")
    f.write("你好")
    f.close()
  • read()方法读取文件全部内容

    # 读数据
    f = open("test.txt", "r", encoding="utf-8")
    data = f.read()# 一次性全读出来
    print(data)
  • readlines()方法读取文件全部内容,放回一个列表,每行数据是列表中的一个元素。

    一次性全部读取,非常低效

    # readlines() 一次性全部读取,非常低效
    f = open("test.txt", "r", encoding="utf-8")
    data = f.readlines()
    print(data)# ['你好\n', '123\n']
    print(type(data))# <class 'list'>
    for line in data:
        print("--->{}".format(line),end="")
    f.close()
  • readline()方法按行读取文件数据

    #readline
    f = open("test.txt", "r", encoding="utf-8")
    data = f.readline()
    print(data)# ['你好\n', '123\n']
    print(type(data))# <class 'list'>
    f.close()
  • writelines(字符串序列)将一个字符串序列(如字符串列表等)的元素写入到文件中

    f = open("test.txt", "w", encoding="utf-8")
    # f.writelines(["zhangsan","lisi","wangwu"])
    # zhangsanlisiwangwu
    f.writelines(["zhangsan\n","lisi\n","wangwu\n"])
    # zhangsan
    # lisi
    # wangwu
    f.close()
  • os.rename(oldname,newname)文件重命名

  • os.remove(filepath)删除文件

  • 安全的打开关闭文件的方式(自动调用close方法):

    with open("d://test.txt","w") as f:
        f.write("hello python")
    with open("test.txt", "w", encoding="utf-8") as f:
        f.writelines(["zhangsan\n","lisi\n","wangwu\n"])

文件夹操作

  • os.mkdir(path):创建文件夹

  • os.getcwd():获取程序运行的当前目录

  • os.listdir(path):获取指定目录下的文件列表

  • os.rmdir(path):删除空文件夹

  • shutil.rmtree(path):删除非空文件夹

    • shutil:高级的文件、文件夹、压缩包处理模块

import os
# 创建文件夹
os.mkdir("d://test_dir")
# 获取程序运行的当前目录
path = os.getcwd()
print(path)
# 获取指定目录下面所有文件
files_list = os.listdir("d://")
print(files_list)
# 删除空文件夹
os.rmdir("d://test_dir")
# 删除非空文件夹
import shutil
shutil.rmtree("d://test_dir")

JSON格式文件操作

  • 引入json模块:import json

  • dumps(python_data):将Python数据转换为JSON编码的字符串

  • loads(json_data):将json编码的字符串转换为python的数据结构

  • dump(python_data, file):将Python数据转换为JSON编码的字符串,并写入文件

  • load(json_file):从JSON数据文件中读取数据,并将JSON编码的字符串转换为python的数据结构

  • Python数据类型与JSON类型对比

    Python

    JSON

    dict

    {}

    list, tuple

    []

    str

    sring

    int 或者 float

    number

    True/False

    true/false

    None

    null

将Python数据转换为JSON编码的字符串,

然后将json编码的字符串转换为python的数据结构:

import json
disc = {"name":"zhangsan",
        "age":20,
        "language":["python", "java"],
        "study":{"AI":"python","bigdata":"hadoop"},
        "if_vip":True,
        }
# 将Python数据转换为JSON编码的字符串
json_str = json.dumps(disc)
print(json_str)
# {"name": "zhangsan", "age": 20, "language": ["python", "java"], "study": {"AI": "python", "bigdata": "hadoop"}, "if_vip": true}
print(type(json_str))# <class 'str'>

# 将json编码的字符串转换为python的数据结构
py_dict = json.loads(json_str)
print(py_dict)
# {'name': 'zhangsan', 'age': 20, 'language': ['python', 'java'], 'study': {'AI': 'python', 'bigdata': 'hadoop'}, 'if_vip': True}
print(type(py_dict))# <class 'dict'>

CSV格式文件操作

  • csv格式文件默认以逗号分隔

  • 引入csv模块:import csv

  • write写操作

    • writerow([row_data])一次写入一行数据

    • writerows([[row_data],[row_data],...])一次写入多行数据

  • read读操作

    • reader(file_object)根据打开的文件对象返回一个可迭代reader对象

    • 可以使用next(reader)遍历reader对象,获取每一行数据

  • DictWriter和DictReader对象处理Python字典类型的数据

write写操作:

import csv
datas = [["name","age"],["zhangsan", 20],["lisi", 24]]
with open("d://user_info.csv","w",newline="",encoding="utf-8") as f:
    writer = csv.writer(f)
    for row in datas:
        writer.writerow(row)
        # name,age
        # zhangsan,20
        # lisi,24
    # 一次写入
    writer.writerows(datas)

read读操作:

# 读csv数据
with open("d://user_info.csv","r",newline="",encoding="utf-8") as f:
    reader = csv.reader(f)
    header = next(reader)
    print(header)# ['name', 'age']
    print("-------")
    for row in reader:
        print(row)
        print(row[0])
        print(row[1])

字典数据操作

  • 写:

import csv
header = ["age","name"]
rows = [{"name":"zhangsan","age": 20},{"name":"lisi","age": 24}]
with open("d://user_info2.csv","w",newline="",encoding="utf-8") as f:
    writer = csv.DictWriter(f, header)
    writer.writeheader()
    writer.writerows(rows)
import csv
header = ["name","age"]
with open("d://user_info2.csv","r",newline="",encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)# OrderedDict([('age', '20'), ('name', 'zhangsan')])
        print(row["name"],row["age"])# zhangsan 20

Last updated