文件目录练习笔记一
- 将如下文件中内容读取出来,然后将其码值存入另一个文件中
文件名为file.txt,文件中内容为“gloryroad”先读取出来数据,然后将字母的码值存入file1.txt文件中,要求file1.txt文件最终看到的效果为:10310811111412111411197100
result=""
with open("E:\\python3.6\\work\\file.txt") as fp:
content=fp.readline()
with open("E:\\python3.6\\work\\file1.txt","w") as fp:
for i in content:
result+=str(ord(i))
fp.write(result)
2、读取文件内容,统计出现次数最多的汉字,并将该汉字和次数打印出来,文件内容如下:薛之谦的了表心意歌词
代码:
d={}
with open("E:\\python3.6\\work\\lyric.txt") as fp:
content=fp.read()
for i in content:
d[i]=content.count(i)
print (d)
3、Python基础题:检验给出的路径是否是一个文件,检验给出的路径是否是一个目录,检验给出的路径是否是绝对路径
import os
def Check_rount_type(s):
if os.path.isdir(s):
return "是目录"
elif os.path.isabs(s):
return "是绝对路径"
elif os.path.isfile(s):
return "是文件"
print(Check_rount_type("E:\\python3.6\\work"))
print(Check_rount_type("E:\\python3.6\\work\\b.txt"))
print(Check_rount_type("b.txt"))
4、写一个函数,可以指定位置去替换文件内容。
如果指定位置超出文件内容长度则在末尾添加,如果指定位置在文件内容中则从中修改
如:文件a.txt中内容为”gggg”,替换内容为”gloryroad”,替换位置为1,则第二个g替换成gloryroad,则为”ggloryroadgg”,若替换位置为4,则超出gggg索引位置,直接在末尾添加,则为”gggggloryroad”
代码部分:
content=""
result=""
with open("E:\\python3.6\\work\\a.txt") as fp:
content=fp.read()
print(content)
def Specified_position_replace(content,replace_str,position):
global result
with open("E:\\python3.6\\work\\a.txt","w") as fp:
if position >len(content):
result=content+replace_str
fp.write(result)
else:
result=content[:position]+replace_str+content[position+1:]
fp.write(result)
#print (Specified_position_replace(content,"gloryroad",1))
print (Specified_position_replace(content,"gloryroad",4))
5、统计第1第2和第3题,写的3个python脚本的代码行数,不包括空行
代码部分:
result=0
with open("E:\\python3.6\\work\\test\\1.py") as fp:
content=fp.readlines()
for i in content:
if i !="\n":
result+=1
with open("E:\\python3.6\\work\\test\\2.py") as fp:
content=fp.readlines()
for i in content:
if i !="\n":
result+=1
with open("E:\\python3.6\\work\\test\\3.py") as fp:
content=fp.readlines()
for i in content:
if i !="\n":
result+=1
print(result-3)
6、写一个行数,能通过传入的参数不同自动构造目录和目录下文件,规则如下:
用户可以从控制台输入3个选项:1、2、q
控制台传入”1”,则生成1个目录A,目录A下面有 2个文件a.txt,b.txt
控制台传入”2”,则生成2个目录(目录A和目录B),目录A下面有2个文件a.txt和b.txt,目录B下面有2个文件b.txt和c.txt
控制台q,则退出
控制台输入其他数据,提示:输入有误!
代码部分:
import os
def fun():
s=input("Please input your command:")
if s=="1":
os.mkdir("E:\\python3.6\\work\\test\\A")
os.chdir("E:\\python3.6\\work\\test\\A")
with open("a.txt","w") as fp:
fp.write("hello")
with open("b.txt","w") as fp:
fp.write("good")
elif s=="2":
os.mkdir("E:\\python3.6\\work\\test\\A")
os.mkdir("E:\\python3.6\\work\\test\\B")
os.chdir("E:\\python3.6\\work\\test\\A")
with open("a.txt","w") as fp:
fp.write("hello")
with open("b.txt","w") as fp:
fp.write("good")
os.chdir("E:\\python3.6\\work\\test\\B")
with open("b.txt","w") as fp:
fp.write("good")
with open("c.txt","w") as fp:
fp.write("everyone")
elif s=="q":
return "退出!"
else:
return "输入有误!"
print (fun())
7、创建一个目录,年月日,规则如下:
创建一个当前年份的目录
在该年份的目录下创建月份的目录
在月份的目录下创建日的目录
然后在日目录下,创建一个文件,当前小时为文件名,然后文件内容写上年月日时分秒
代码部分:
import os
import time
os.mkdir(str(time.localtime().tm_year))
os.chdir(str(time.localtime().tm_year))
os.mkdir(str(time.localtime().tm_mon))
os.chdir(str(time.localtime().tm_mon))
os.mkdir(str(time.localtime().tm_mday))
os.chdir(str(time.localtime().tm_mday))
os.mkdir(str(time.localtime().tm_hour))
os.chdir(str(time.localtime().tm_hour))
with open(str(time.localtime().tm_hour)+".txt","w") as fp:
fp.write(time.asctime())
思考:如果创建所有月份、日期,怎么处理
8、在e盘下新建指定深度的文件名,规则如下:
传入参数2,目录名为gloryroad,文件名为a.txt
则会生成e:\gloryroad\gloryroad\a.txt
代码部分:
import os
os.makedirs("e:\\gloryroad\\gloryroad")
os.chdir("e:\\gloryroad\\gloryroad")
with open("a.txt","w") as fp:
fp.write("gloryroad")
9、写一个函数,读取文件指定行数的内容,如前5行,第3行到第6行等
代码部分:
import os
result=[]
with open("E:\\python3.6\\work\\c.txt") as fp:
result=fp.readlines()
print (len(result))
content=""
def read_specified_line(start_num,end_num):
global content
if start_num >=0 and start_num<end_num and end_num<len(result):
for i in result[start_num:end_num]:
content+=i
content+="\n"
else:
return "你输入的信息有误!"
return content
print (read_specified_line(3,6))
10、在e盘下新建如下目录文件结构,找出python_practice目录下所有的文件,并在每个文件中写入”i am learning gloryroad!”
代码部分:
import os
os.mkdir("e:\\python_practice")
os.chdir("e:\\python_practice")
for i in range(1,3):
os.mkdir("practice0"+str(i))
os.chdir("practice01")
with open("a.txt","w") as fp:
fp.write("i am learning gloryroad!")
os.chdir("e:\\python_practice\\practice02")
os.mkdir("test")
for i in range(2,4):
os.mkdir("test0"+str(i))
os.chdir("test03")
with open("b.txt","w") as fp:
fp.write("i am learning gloryroad!")
with open("c.txt","w") as fp:
fp.write("i am learning gloryroad!")
os.chdir("e:\\python_practice\\practice02\\test")
with open("e.txt","w") as fp:
fp.write("i am learning gloryroad!")
11、文件内容为如下诗词,请将每行倒序输出并重新写入该文件
春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。
雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流。
倒序重新写入的效果为:
小楼昨夜又东风,故国不堪回首月明中。春花秋月何时了?往事知多少。
问君能有几多愁?恰似一江春水向东流。雕栏玉砌应犹在,只是朱颜改。
代码部分:
content=[]
result=[]
with open("E:\\python3.6\\work\\c.txt") as fp:
content=fp.readlines()
for i in content:
result.append(i[::-1].strip())
with open("E:\\python3.6\\work\\c.txt","w+") as fp:
for i in result:
fp.write(i)
fp.write("\n")
12、往文件中写入”口”字图案,要求可以通过传入的数字参数来*缩放”口”字图案
def fun(s):
result = ''
for i in range(s):
if i==0 or i==s-1:
result += ("* "*s)
result += '\n'
else:
result += ("*"+(2*s-3)*" "+"*")
result += '\n'
return result
result=fun(10)
print (result)
with open("e:\\test.txt","w") as fp:
fp.write(result)
13、文件内容为一个多层元组,遍历该元组,当全为数字时输出数字之和,全为字母输出字符串,有数字有字母输出False,并将该内容写入到该文件的下一行中
如文件a.txt内容为:((1,2,3),("a","b","c"),("a",1,2))
则执行该程序后,文件a.txt内容将会如下:有两行,第一行文件原来的内容,第二行是按规则生成的一组元组数据
((1,2,3),("a","b","c"),("a",1,2))
(6,"abc",False)
代码部分:
with open("E:\\python3.6\\work\\c.txt") as fp:
content=tuple(eval(fp.read()))
result=[]
tmp1=0
for i in content[0]:
if isinstance(i,int):
tmp1+=i
tmp2=""
for i in content[1]:
if isinstance(i,str):
tmp2+=str(i)
tmp3=""
for i in content[2]:
if not (isinstance(i,int) and isinstance(i,str)):
tmp3="None"
result.append(tmp1)
result.append(tmp2)
result.append(tmp3)
result=tuple(result)
print (result)
with open("E:\\python3.6\\work\\c.txt","a+") as fp:
fp.read()
fp.write(str(result))
14、在e盘下用程序新建26个小写字母文件夹,然后通过控制台输入:
如果输入”a”,则删除a文件夹,输入什么字母则删除什么字母的文件夹;
如果文件夹已经被删除了在输入该字母,会提示不存在该文件夹;
如果输入其他数据,则提示:请重新输入。
要求至少循环5次。
代码部分:
import os
os.chdir("E:\\abctest")
for i in range(26):
os.mkdir(chr(97+i))
n=0
while n<5:
n+=1
user=input("Please input your letter:")
if user in os.listdir():
os.rmdir(user)
print ("删除成功")
else:
print ("请重新输入!")
15、给出一个文件路径,判断是否存在于本地电脑中,如果存在则输出True,否则输出False
如”e:\\test01\\test.txt”,如果电脑中存在该目录和文件名,则输出True,否则输出False
代码部分:
import os
def judge_file(dir_path,file_path):
for root,dirs,files in os.walk(dir_path,topdown=False):
for name in files:
if os.path.join(root,name)==file_path:
return True
else:
return False
if __name__=="__main__":
print (judge_file("E:\\python3.6\\work\\test","e:\\test01\\test.txt"))
16、按照阶乘思想,新建多层目录和文件,规则如下:
输入5,则会生成5级目录,根目录名称为”5的阶乘”,二级目录为5的阶乘的值为120,三级目录为4的阶乘为24....,五级目录为2的阶乘为2,然后其下文件为1.txt
输入3,则会生成3级目录:
输入1,则会生成1级目录:目录名为1的阶乘,其下文件名为1.txt
代码部分:
def fac(n):
if n<=1:
return 1
else:
return n*fac(n-1)
import os
for i in range(5,0,-1):
os.mkdir(str(fac(i)))
os.chdir(str(fac(i)))
with open("1.txt","w") as fp:
fp.write("hello")
17、文件升级操作,在e盘下先手动新建如下目录和文件,然后控制台接收输入1,则文件上升1级,即a.txt就不在五级目录下了,而是跑到四级目录下面,输入4,则a.txt就在一级目录下面,输入5,则a.txt就在根目录下面
输入1执行程序的效果:
输入4执行程序的效果:
输入5执行的效果为:a.txt跑到根目录下面,与一级目录平级。
代码部分:
import os,shutil
result=[]
for root,dirs,files in os.walk("E:\\abctest",topdown=False):
for name in files:
file_path=os.path.join(root,name)
for dir in dirs:
result.append(os.path.join(root,dir))
result.append("E:\\abctest")
command=input("Please input your number:")
for i in range(1,6):
if command==str(i):
shutil.move(file_path,result[i])
18、同时读写文件,将文件内容为”i am learning gloryroad”读取出来后重新写入到该文件中,效果为按空格分割,每个单词均换行
即:文件内容为:”i am learning gloryroad”,读写文件后,就会变成如下效果:
i
am
learning
gloryroad
代码部分:
with open("E:\\python3.6\\work\\c.txt") as fp:
content=fp.read()
content=content.split()
with open("E:\\python3.6\\work\\c.txt","w") as fp:
for i in content:
fp.write(i)
fp.write("\n")
19、统计你的e盘下有多少个文件扩展名为txt的文件,将统计的数目和找到的txt文件(全路径如”e:\\test\\a.txt”)打印出来
代码部分
result=[]
count=0
import os
for root,dirs,files in os.walk("E:\\python3.6",topdown=False):
for name in files:
if name[-4:]==".txt":
count+=1
result.append(os.path.join(root,name))
print (count,result)
20、找出文件中ascii码升序连续的多个字母并重新写入该文件中,要求至少连续2位,反向连续不算(如ba)
如文件内容为”testabedfcde”,则程序执行后打开该文件的内容应为:”ab cde”
代码部分:
result=[]
tmp=[]
with open("E:\\python3.6\\work\\c.txt") as fp:
content=fp.read()
for i in range(len(content)-1):
if ord(content[i])+1==ord(content[i+1]):
tmp.append(content[i])
tmp.append(content[i+1])
for i in tmp:
if i not in result:
result.append(i)
with open("E:\\python3.6\\work\\c.txt","w") as fp:
fp.write("".join(result))
备注:不推荐