五、文件I/O练习#

1. 制作文件备份#

1
2
需求:
输入文件的名字,然后程序自动完成对文件进行备份

分析:

1
2
3
1.输入文件名 b.py
2.创建文件  文件名[复制].py
3.读取文件,写入到复制的文件中

代码实现:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 1.输入文件名 b.txt
inputName = input('请输入文件名')
# 2.创建文件  文件名[复制].py
# inputName.find()
# inputName.rfind()
index = inputName.rfind('.')
copyName = inputName[:index] + '[复制]' +inputName[index:]
# 3.读取文件,写入到复制的文件中
# 打开源文件
inputFile = open(inputName)
# 打开复制的文件
copyFile = open(copyName,'w')

"""------------------ 读取一部分写入 ------------------"""
line = inputFile.readline()
while line:
    # 有数据,写入文件
    copyFile.write(line)
    # 读取一行
    line = inputFile.readline()

# 关闭文件
inputFile.close()
copyFile.close()

2. 文件统计#

1
2
3
需求:
输入一个文件名,统计文件中代码行数、注释行数、空行数
并输出代码以及注释

分析:

1
2
3
4
5
6
1.输入文件名 test.py
2.打开文件
3.统计 readline
    空行 空
    注释行数 去空格 #开头
    代码行数

代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 1.输入文件名 test.py
fileName = input('请输入要统计的文件名')
# 2.打开文件
f = open(fileName,encoding='utf-8')
# 3.统计 readline
#     空行 空
#     注释行数 去空格 #开头
#     代码行数

# 定义三个变量保存空行  注释行数  代码行数
emptyCount = 0
commandCount = 0
codeCount = 0

"""------------------ 统计 ------------------"""
line = f.readline()
# str = '  '
while line:
    if not line.strip():
        emptyCount += 1
    elif line.strip().startswith('#'):
        commandCount += 1
    else:
        codeCount += 1

    # 读取下一行
    line = f.readline()

print('代码数:%d,空行数:%d,注释数:%d'%(codeCount,emptyCount,commandCount))
# 4.关闭文件
f.close()