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