第六章 文件和目录操作 课后练习题

目录

一、文件操作练习题

1.同时读写文件

2.创建一个空文件

3.读取文件的前两行

4.读取文件的奇数行

5.在文件中写入一个列表的内容

6.在文件中的0、2、4位置写入当前的文件位置偏移量

7.with写法读取文件内容

8.统计一个文件中单词个数

9.将一个文件的所有单词倒序写入文件中

二、课后综合练习题

1. 基础题:

2. 返回一个路径的目录名和文件名

3. 分离文件名与扩展名

4. 找出某个目录下所有的文件,并在每个文件中写入“gloryroad”

5. 如果某个目录下文件名包含txt后缀名,则把文件后面追加写一行“被我找到了!”

6. 命题练习:

7. 删除某个目录下的全部文件

8. 统计某个目录下文件数和目录个数

9. 使用程序建立一个多级的目录,在每个目录下,新建一个和目录名字一样的txt文件

10. 查找某个目录下是否存在某个文件名

11.用系统命令拷贝文件

12.输入源文件所在路径和目标目录路径,然后实现文件拷贝功能

13.遍历某个目录下的所有图片,并在图片名称后面增加_xx

14.遍历指定目录下的所有文件,找出其中占用空间最大的前3个文件

15.过滤py源码中的#注释,另存为文件result.py,并执行result.py,断言是否执行成功

16.文件访问,提示输入数字 N 和文件 F, 然后显示文件 F 的前 N 行.

17.从命令行接受1个路径如:c:\a\b\c\1.py, 实现1个函数创建目录a\b\c,创建文件1.py,实现1个函数删除已创建的目录及文件

18.有一个ip.txt,里面每行是一个ip,实现一个函数,ping 每个ip的结果,把结果记录存到ping.txt中,格式为 ip:0或ip:1 ,0代表ping成功,1代表ping失败

19.实现DOS命令执行功能,接受输入命令并执行,然后把执行结果和返回码打印到屏幕

20.文件访问


一、文件操作练习题

1.同时读写文件

fp = open("p6-1-file.txt","w+", encoding="utf-8")
content = ["文件操作\t练习题1\n"]
for i in range(5):
	content.append("测试行" + str(i) +"\n")

fp.writelines(content)
fp.seek(0,0)
lines = fp.read()
fp.close()
print(lines)


2.创建一个空文件

fp=open("p6-2-file.txt","w+")
fp.write("")
fp.seek(0,0)
print(fp.read())
fp.close()


3.读取文件的前两行

fp=open("p6-3-file.txt","r")
result = []
for i in range(2):
	result.append(fp.readline())

print("前两行文件内容是:",result)
fp.close()


4.读取文件的奇数行

fp = open("p6-4-file.txt","r",encoding="utf-8")
line_no = 1
odd_content = []
while 1:
	line = fp.readline()
	if line:
		if line_no % 2==1:
			odd_content.append(line)
		line_no += 1
	else:
		break

print("文件奇数行内容:", odd_content)
fp.close()


5.在文件中写入一个列表的内容

fp = open("p6-5-file.txt","w+")
content = ["hello\n","This is a test file!\n","\r\n","测\t试\n文\t件\r","\n"]
fp.writelines(content)
fp.seek(0,0)
print(fp.read())
fp.close()


6.在文件中的0、2、4位置写入当前的文件位置偏移量

fp=open("p6-6-file.txt","r+")
print("写入位置偏移量前的文件内容:",fp.read())
off=fp.seek(0,0)
fp.write(str(off))
off = str(fp.seek(2,0))
fp.write(off)
off = str(fp.seek(4,0))
fp.write(off)
fp.seek(0,0)
print("写入位置偏移量后的文件内容:",fp.read())
fp.close()


7.with写法读取文件内容

with open("p6-7-file.txt",encoding="utf-8") as fp:
	print(fp.read())


8.统计一个文件中单词个数

文件内容:
        glory road ,wu lao shi
        file,haha
        women, man, love

with open("p6-8-file.txt","w+") as fp:
	fp.write("glory road ,wu lao shi\nfile,haha\nwomen, man, love")
	fp.seek(0,0)
	content = fp.read()
	content = content.replace(","," ")
	print(content)
	l = content.split()
	print("文件中一共有%d个单词:%s" % (len(l),l))


9.将一个文件的所有单词倒序写入文件中

import string
fp = open("p6-9-before-file.txt","r",encoding="utf-8")
fp1 = open("p6-9-after-file.txt","w+",encoding="utf-8")
lines = fp.readlines()
result = []
tmp = ""
# 将文件内容倒序
for line in lines: # 遍历得到文件的每一行内容
	if line.strip():# 如果不是空行
		l_len =len(line)
		for i in range(l_len): # 遍历每一行的内容
			if line[i] not in string.ascii_letters: # 如果不是字母
				if tmp: # 如果tmp有内容
					result.append(tmp[::-1]) # 先把tmp单词倒序后,加到result中
				tmp = "" # 然后清空tmp
				result.append(line[i]) # 把非字母的部分,如空格 \n 中文 特殊符号等,直接加入result中
			else: # 如果是字母
				tmp += line[i] # 保存单词
			if i == l_len - 1 and tmp != "": # 处理文件末尾是单词,但单词后面没有其他任何内容的情况
				result.append(tmp[::-1])
				
	else: # 若是空行\n,就直接加到结果集中
		result.append(line)
fp.close()
fp1.write("".join(result))
fp1.seek(0,0)
print("倒序后的文件内容:",fp1.read())
fp1.close()

"""before文件内容如下:
tseN gge 储蓄金
 
sgnivas1, yenom tpek ni evreser
积蓄、贮备金
 
noD't yrrow tuoba eht boj uoy tsol. eW evah a elttil tsen gge ot evil no litnu uoy dnif rehtona.

ba测 测试 edc
"""

二、课后综合练习题

1. 基础题:

    检验给出的路径是否是一个文件:
    检验给出的路径是否是一个目录:
    判断是否是绝对路径:
    检验给出的路径是否真地存:
>>> import os.path
>>> os.path.isfile(r"F:\课后练习题\a.py")
True
>>> os.path.isfile(r"F:\课后练习题")
False
>>>
>>> os.path.isdir(r"F:\课后练习题\a.py")
False
>>> os.path.isdir(r"F:\课后练习题")
True
>>> os.path.isabs(r"F:\test\test.py")
True
>>> os.path.exists(r"F:\test\test.py")
False
>>> os.path.isabs(r"F:\课后练习题\a.py")
True
>>> os.path.exists(r"F:\课后练习题\a.py")
True
>>> os.path.isabs(r"a.py")
False
>>> os.path.exists(r"a.py")
True
>>> os.path.isabs(r"test\test1")
False

2. 返回一个路径的目录名和文件名

>>> import os.path
>>> os.path.dirname("F:\\test\\a\\test.txt")
'F:\\test\\a'
>>> os.path.basename("F:\\test\\a\\test.txt")
'test.txt'

3. 分离文件名与扩展名


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《现代操作系统》第四版第六章主要讨论了操作系统的内存管理和存储管理的相关内容。在这一章中,我们学习了操作系统如何管理计算机的内存资源,包括内存分配、虚拟内存和内存映射等技术。此外,我们也了解了存储管理的相关概念,包括文件系统、存储设备和磁盘管理等内容。 首先,我们学习了内存管理的重要性,以及操作系统是如何管理和分配内存资源的。内存分配是指操作系统如何将计算机的内存空间分配给不同的程序或进程,以便它们能够正常运行。虚拟内存则是指操作系统如何利用磁盘空间来扩展内存,以便能够运行更多的程序或进程。内存映射则是指操作系统如何将虚拟内存映射到物理内存,以便程序能够访问和操作内存资源。 其次,我们学习了存储管理的相关内容,包括文件系统的组织和管理、存储设备的管理以及磁盘管理的技术。文件系统是操作系统用来组织和管理存储设备上的文件目录的一种技术,它能够帮助用户方便地存储和访问文件。存储设备管理则是指操作系统如何管理计算机上的存储设备,包括硬盘、固态硬盘和光盘等设备。磁盘管理则是指操作系统如何管理磁盘上的存储空间,以便能够高效地存储和访问数据。 综上所述,《现代操作系统》第四版第六章涵盖了操作系统的内存管理和存储管理的相关内容,帮助我们更好地理解和掌握操作系统的相关技术和原理。这些知识不仅对我们理解计算机系统和性能优化有重要意义,也能够帮助我们在实际工作中更好地使用和管理计算机系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值