栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python文件操作和生成测试数据

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python文件操作和生成测试数据

目录

1.打开文件(open函数)

2.关闭文件(close函数)

3.向文件中写入内容(write函数)

 4.从文件中读取内容

 5.打开文件的另一种方式(with open)

6. python中的os模块

7. python中的shutil模块

8.python创建多个文件

9.python生成大小递增文件

10.python创建指定大小的文件

11.windows下生成指定大小的空文件

12.Linux下生成指定大小的文件

1.打开文件(open函数)

变量=open(文件名,访问模式,encoding="utf-8")

        变量代表打开的那个文件。

        文件名前可以加绝对路径或相对路径。

访问模式:

(1)r(readonly)只读模式

(2)w(write)编辑模式。打开文件不存在,会新建一个文件;编辑文件时,会把文件之前内容覆盖掉。

(3)a(append)追加模式。打开文件不存在,会新建一个文件;编辑文件时,不覆盖之前内容,从文件末尾开始添加。

2.关闭文件(close函数)

变量.close()

3.向文件中写入内容(write函数)

变量.write("写入的内容")

        写入的内容:字符串类型

# 定义函数
def file_1():
    # r:(raw原始)表示所有字符串不做转义
    # 打开文件
    file1 = open(r"H:testfilefile2.txt", "a", encoding="utf-8")
    # 向文件中写入内容
    file1.write("python从入门到入门")
    # 关闭文件
    file1.close()
#调用函数
if __name__ == '__main__':
    file_1()

 练习:打开一个文本文件,在文件中写入100句python从入门到入门,关闭文件。

def file_2():
    # r:(raw原始)表示所有字符串不做转义
    # 打开文件
    file2 = open(r"H:testfilefile2.txt", "w", encoding="utf-8")
    # 向文件中写入100遍
    for i in range(100):
        file2.write("python从入门到入门n")
    # 关闭文件
    file2.close()
# 调用函数
if __name__ == '__main__':
    file_2()

 4.从文件中读取内容

(1)read函数

读取的内容=变量.read(size)

        size读取内容的长度 size是整数。

        size如果不指定,默认全部读取;如果指定了负数,也表示全部读取。

功能:读取文件中的全部内容。

# 第一个r:(raw原始)表示所有字符串不做转义,第二个r:只读模式
# 打开文件
file3 = open(r"H:testfilefile3.txt", "r", encoding="utf-8")
# 读取文件file3.txt的所有内容,并打印在屏幕上
all_content=file3.read()
print(all_content)
# 关闭文件
file3.close()

 

(2)readline函数

读取的一行内容=变量.readline()

功能:从文件中读取一行数据。

# 第一个r:(raw原始)表示所有字符串不做转义,第二个r:只读模式
# 打开文件
file3 = open(r"H:testfilefile3.txt", "r", encoding="utf-8")
# 读取文件file3.txt的一行内容
one_content=file3.readline()
print(one_content)
# 关闭文件
file3.close()

(3)readlines函数

列表类型=变量.readlines()

        如果想读取哪一行,可以根据列表中的索引来取那一行。

功能,把文件的内容全部读取,函数返回的结果是列表类型,列表中每一个元素都是一个字符串的类型,每个元素是文件的中的每行内容。

# 第一个r:(raw原始)表示所有字符串不做转义,第二个r:只读模式
# 打开文件
file3 = open(r"H:testfilefile3.txt", "r", encoding="utf-8")
# 读取文件file3.txt的指定一行内容
content=file3.readlines()
# 打印返回类型
print(type(content))
# 读取第5行内容,列表索引从0开始
hang5=content[4]
print(hang5)
# 关闭文件
file3.close()

练习:从一个文件中(比如有10行数据)读取全部内容,然后把第3行的内容写到另一个文件中。

def file_3():
    # 第一个r:(raw原始)表示所有字符串不做转义,第二个r:只读模式
    # 打开文件
    file3 = open(r"H:testfilefile3.txt", "r", encoding="utf-8")
    # 读取文件file3.txt的指定一行内容
    content=file3.readlines()
    # 读取第3行内容,列表索引从0开始
    hang3=content[2]
    # 打开文件
    file1 = open(r"H:testfilefile1.txt", "w", encoding="utf-8")
    # 将hang3的内容写到file1中
    file1.write(hang3)
    # 关闭文件
    file3.close()
# 调用函数
if __name__ == '__main__':
    file_3()

 5.打开文件的另一种方式(with open)

with open(文件名,访问模式,encoding=”utf-8”) as 变量:

和open函数的区别:可以自动执行文件关闭操作;不需要自己调用close函数来关闭文件。

def file_4():
    # 打开文件
    with open(r"H:testfilefile4.txt","w",encoding="utf-8") as file4:
        # 写入内容
        for i in range(100):
            file4.write("pythonn")
# 调用函数
if __name__ == '__main__':
    file_4()

6. python中的os模块

对文件进行一些相关的操作。

引入模块:import os

(1)对文件名进行重命名rename函数

os.rename(旧文件名,新文件名)

文件名前面可以加路径。文件找不到,程序报错

(2)删除一个文件remove函数

os.remove(文件名)

文件名前面可以加路径。文件找不到,程序报错

(3)创建文件夹mkdir函数

os.mkdir(文件夹的名字)

文件夹的名字前面可以加路径

(4)删除空的文件夹函数rmdir函数

os.rmdir(文件夹的名字)

文件夹的名字前面可以加路径

# 引入模块
import os
# 文件重命名
os.rename(r"H:testfilefile4.txt",r"H:testfilefile4new.txt")
# 文件删除
os.remove(r"H:testfilefile2.txt")
# 创建文件夹
os.mkdir(r"H:python")
# 删除空文件夹
os.rmdir(r"H:python")

7. python中的shutil模块

引入模块:from shutil import rmtree

(1)rmtree函数删除非空的文件夹

rmtree(文件夹名字)

# 引入模块
from shutil import rmtree
# 删除非空的文件夹
rmtree(r"H:testfile")

8.python创建多个文件
# 引入模块
import os
# 要存放文件的路径
path=r"H:testfile"
# 查看当前路径
os.getcwd()
# 切换到的路径
os.chdir(path)
# 文件前缀
file_prefix = 'test'
 # 文件后缀
file_suffix = '.txt'
# 文件个数
file_num = 1000
for i in range(1, file_num ):
    # 文件名
    file_name = file_prefix + str(i) + file_suffix
    # 打开文件,写入内容
    file = open(file_name ,'w', encoding="utf-8")
    file.write("python文件")
     # 关闭文件
    file.close()

9.python生成大小递增文件
# 生成10个文件从1MB到10MB
for i in range(1,11):
    with open(r'H:testfile\'+str(i)+"MB.txt","w",encoding="utf-8")as f:
        # 1024KB,1024*1024MB,1写入的内容
        f.write(i*1024*1024*'1')

10.python创建指定大小的文件
import time
# 获取时间和日期
def getnowdatatime(flag=0):
    now = time.localtime(time.time())
    if flag == 0:
        return time.strftime('%Y-%m-%d %H:%M:%S', now)
    if flag == 1:
        return time.strftime('%Y-%m-%d', now)
    if flag == 2:
        return time.strftime('%H:%M:%S', now)
    if flag == 3:
        return time.strftime('%Y%m%d-%H%M%S', now)
# 生成指定大小的TXT文件
def generateTXTFile():
    fileSize = 0
    # 判断输入是否有误
    while True:
        size = input('请输入你想生成的TXT文件大小(MB):')
        if size.strip().isdigit() != True:
            print('只能输入整数,请重新输入!')
            continue
        else:
            fileSize = int(size)
            break
    if fileSize >= 100:
        print('正在生成TXT文件,请稍候... ...')
    # 生成指定大小的TXT文件
    filename = getnowdatatime(3) + '_' + size + 'MB.txt'
    print(f'文件名:{filename}')
    # 文件保存的路径
    filepath =r"H:testfile\"
    f = open(filepath + filename, 'w')
    # 获取开始时间
    starttime = getnowdatatime()
    startclock = time.process_time()
    for i in range(fileSize):
        if i >= 100:
            if i % 100 == 0:
                print(f'已生成{i//100 * 100}MB数据...')
        for j in range(1024):
            try:
                f.write('01' * 512)
            except KeyboardInterrupt:
                print('n异常中断:KeyboardInterrupt')
                f.close()
                exit(-1)
    f.close()
    print(f'文件已生成并保存,文件大小:{fileSize}MB.n')
    print(f'保存路径: {filepath + filename}')
    print(f'开始时间:{starttime}')
    print(f'结束时间:{getnowdatatime()}')
    print(f'总共耗时:{(time.process_time() - startclock):<.3}sec.')
if __name__ == '__main__':
    generateTXTFile()

11.windows下生成指定大小的空文件

语法:fsutil file createnew [文件保存的路径文件名] [文件大小单位:Byte]

1KB=1024Byte                      1MB=1024KB

1GB=1024MB                       1TB=1024GB

12.Linux下生成指定大小的文件

(1)dd命令

(2)head命令

head -c 10MB /dev/zero > test1.txt

(3)fallocate命令

fallocate -l 1024 test2.txt      单位:Byte
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005261.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号