实验要求
答案代码
filename = 'demo.py' with open(filename,'r') as fp: lines=fp.readlines() maxlen = len(max(lines,key=len)) lines = [line.rstrip().ljust(maxlen)+'#'+str(index+1) + '\n' for index,line in enumerate(lines)] print(lines) with open(filename[:-3]+'_new.py','w') as fp: fp.writelines(lines)
记录一下这里面学到的知识点
max()
key是用来指定比较的数据,这里的key就是len函数就是将数组里最长的字符串取出来,最后取出来的是字符串,而不是字符串长度,所以这里外面还要嵌套一个len.
rstrip([chars])
清除字符串末尾的指定字符,默认为空格
ljust(len,[chars])
返回一个原字符串左对齐,并使用指定字符填充至指定长度的新字符串,默认的填充字符为空格。如果指定的长度小于原字符串的长度则返回原字符串。
ok,按这样写应该没问题了,可是当我运行代码时报错了,说是找不到demo.py,这是为什么呢?
后面发现好像是因为vscode运行python找相对路径会有点问题, 我就上网查了,有很多种办法,我这次用的其中一种办法就是
将这这段代码写在demo.py的开头就可以使用相对路径了
import os, sys os.chdir(sys.path[0])
完整代码
import os, sys os.chdir(sys.path[0]) filename = 'demo.py' with open(filename,'r') as fp: lines=fp.readlines() maxlen = len(max(lines,key=len)) lines = [line.rstrip().ljust(maxlen)+'#'+str(index+1) + '\n' for index,line in enumerate(lines)] print(lines) with open(filename[:-3]+'_new.py','w') as fp: fp.writelines(lines)
import os, sys #1 os.chdir(sys.path[0]) #2 filename = 'demo.py' #3 with open(filename,'r') as fp: #4 lines=fp.readlines() #5 maxlen = len(max(lines,key=len)) #6 #7 lines = [line.rstrip().ljust(maxlen)+'#'+str(index+1) + '\n' for index,line in enumerate(lines)] #8 print(lines) #9 with open(filename[:-3]+'_new.py','w') as fp: #10 fp.writelines(lines)