实验八 Python文件处理

实验要求:新建一个文件夹命名为“学号+姓名”格式命名,以下所有实验代码均保存在此文件夹。

1. 创建文件 suiji.txt,文件共 100000 行,每行存放一个 1~100 之间的整数,最后将此文件保存至 data 文件夹.
提示:调用 random. randint(1,100)方法产生随机数

import random

with open("suiji.txt", 'w+') as fp:
    for i in range(100000):
        fp.write(str(random.randint(1, 100)))
        fp.write('\n')

2. 统计文件(tongji.csv)中的数字、小写字母、大写字母出现的次数。

提示:

  • 字符串.isdigit() 所有字符都是数字,为真返回 Ture,否则返回 False。
  • 字符串.islower() 所有字符都是小写,为真返回 Ture,否则返回 False。
  • 字符串.isupper() 所有字符都是大写,为真返回 Ture,否则返回 False
with open("tongji.csv", 'r') as fp:
    count1 = 0
    count2 = 0
    count3 = 0
    for i in fp.read():
        if i.isdigit():
            count1 += 1
        if i.islower():
            count2 += 1
        if i.isupper():
            count3 += 1
print("    数字出现次数:", count1)
print("小写字母出现次数:", count2)
print("大写字母出现次数:", count3)

3. 计算(pingjun.csv)文件中所有数值数据的和。(选做)

with open("pingjun.csv", 'r') as fp:
    num = 0
    s = fp.read()[1:]  # 从第二行开始读取
    for i in s:
        num += i

print("所有数值数据的和:", num)

4. 读取一个文件(test-row.txt),显示除了以#号开头的行以外的所有行。

提示:使用 str. startswith()方法判定字符串是否以某个符开头。

with open("test-row.txt", 'r') as fp:
    s = fp.readlines()
    for row in s:
        if row[0] == '#':  # 方法一:使用if函数
            continue
        else:
            print(row, '\n')

# 方法二:使用 str. startswith()方法判定字符串是否以某个符开头
with open("test-row.txt", 'r') as fp:
    s = fp.readlines()
    for row in s:
        if not row.startswith('#'):
            print(row, '\n')

5. 利用 os 模块读取 data 文件夹中的所有数据文件,并将其名字前面统一加上“文件操作”。

import os  # 引入os模块

oldname = os.listdir('.\data')  # 返回指定目录下的所有文件和目录名
os.chdir('.\data')  # 改变当前工作目录到指定目录
for name in oldname:
    os.rename(name, "文件操作-" + name)  # os.rename(old,new)文件old重命名为new

6. (选做)打开一个英文的文本文件,将该文件中的每个英文字母加密后写入到一个新文件。
加密的方法是:将 A 变成 B,B 变成 C,Y 变成 Z,Z 变成 A;a 变成 b,b 变成 c,其他字符不变化。

with open("yingwen.txt", "r") as fp:
    content = fp.read()
    print("原文件的内容:", '\n' + content)
fp.close()  # 可选项
newstr = ''
for i in content:
    if i.islower():  # 如果字母是小写的话
        if i == 'a' or i == 'b':
            num = ord(i)
            i = chr(num + 1)  # 如果是a,b,ASCII码加一 a变成b,b变成c
    if i.isupper():  # 如果字母是大写的话
        if i == 'A' or i == 'B' or i == 'Y':
            num = ord(i)
            i = chr(num + 1)  # 如果是A,B,Y,ASCII码加一 A变成B,B变成C,Y变成Z
        if i == 'Z':
            i = chr(65)  # 如果是Z,Z变成 A
            continue
    newstr = newstr + i  # 每轮修改后在循环中添加到新的字符串
print("修改后文件中的内容:", '\n' + newstr)

with open("yingwen_new.txt", "w+") as fp:
    fp.write(newstr)  # 将新的字符串文本写入新文本文件
fp.close()  # 可选项

7. 图片下载实验:
    (1)利用以下代码获取图片的字节流
    import requests
    strs=requests.get(url).content#字节序列,即将保存的文件内容
    #url 是字符串,下面是 url 连接
    #https://img12.360buyimg.com/n1/s450x450_jfs/t1/142383/17/138
25/73504/5fa8b1c8E6a34854c/91c7d2bb5ea7f9aa.jpg
#http://img10.360buyimg.com/n1/s450x450_jfs/t1/70270/22/10661
/109832/5d834285E50d7c841/ad61e639c4fb32d5.jpg
    (2)将 url 制向图片的字节序列保存至图片,其中图片名字和格式需要按照 url 规定的格式(即标注黄色的部分,字符串的 split 方法自动识别),最后将图片保存至 data 文件。

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

再见以前说再见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值