读写文件并填写行号

适 用 专 业

适用于所有专业。

实 验 目 的

(1)熟练掌握内置函数open()的用法。
(2)熟练运用内置函数len()、max()、enumerate()。
(3)熟练运用字符串的strip()、just()和其他方法。
(4)熟练运用列表推导式。

实 验 内 容

编写一个程序demo.py,要求运行该程序后,生成demo_new.py文件,其中内容与demo.py一样,只是在每一行的后面加上行号。要求行号以#开始,并且所有行的#垂直对齐。

代码

filename = 'demo.py'
with open(filename,'r') as fp:      #以只读的方式打开该文件,with:自动关闭,文件中有汉字会导致编码出现问题
    list1 = fp.readlines();         #从文件读取整行,可作列表使用,使用前提是open模式为'r'
mxlen = len(max(list1,key=len));    #长度为规则,根据元素的长度来决定排序规则,
list1 = [line.rstrip().ljust(mxlen)+ '#' +str(index)+'\n' for index, line in enumerate(list1)];     #在枚举对象中
with open(filename[:-3]+'_new.py','w') as fp:   #创建文件的格式:open(‘path’+filename+‘文件格式’,‘w’)
    fp.writelines(list1);                       #[:-3] 切片,截取filename文件名的[0~-3]
print(filename);

运行结果

D:\Software\Anaconda3\python.exe D:/Desktop/PyCharmWork/Demo/work-06-2022-04-15/__init__.py
demo.py

Process finished with exit code 0

demo.py

qq
qwqe
sssssss
sad

demo_new.py

qq      #0
qwqe    #1
sssssss #2
sad     #3

参考资料

【1】(101条消息) Python作业五_哈希表扁豆的博客-CSDN博客

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这道题要求读写文本文件填写行号,然后编写一个程序demo.py并运行它,生成一个文件demo_new.py,其内容与demo.py相同,只是在每一行的后面加上行号。要求行号以#开始,并且所有行的#直接对齐。行号从#开始,并且所有行的#直接对齐。 ### 回答2: # 开头,并且行号前面有两个空格。 在Python,我们可以使用基本的文件输入输出操作来读写文本文件。使用open()函数来打开一个文件,可以传入文件名和打开模式。常用的打开模式包括“r”(读模式)、“w”(写模式)、“a”(追加模式)等。 读取文本文件时,我们可以使用read()函数读取全部内容,也可以使用readline()函数逐行读取。写入文本文件时,我们可以使用write()函数写入字符串。 为了实现我们的需求,我们可以使用文件读取和写入的相关知识,以及循环语句和字符串拼接操作。 具体步骤如下: 1. 首先,我们需要打开原始文件demo.py,并创建一个文件demo_new.py。 ``` with open('demo.py', 'r') as f: with open('demo_new.py', 'w') as fnew: ``` 2. 在读取文件的每一行时,我们需要记录当前行号,使用循环变量i即可。同时,我们需要去掉每一行的换行符"\n",否则后面加行号时会有冗余。 ``` i = 1 for line in f.readlines(): line = line.strip() ``` 3. 在每一行后面加上行号,并写入到新文件。由于使用的是字符串拼接,需要注意各个部分之间的空格和格式,以及行号需要使用字符串形式。 ``` line_with_num = f"#{i:02d} {line}\n" fnew.write(line_with_num) i += 1 ``` 4. 最后,关闭文件。 ``` fnew.close() f.close() ``` 完整代码如下: ``` with open('demo.py', 'r') as f: with open('demo_new.py', 'w') as fnew: i = 1 for line in f.readlines(): line = line.strip() line_with_num = f"#{i:02d} {line}\n" fnew.write(line_with_num) i += 1 fnew.close() f.close() ``` 执行该程序后,生成的demo_new.py文件一行都会加上行号,形如“#01 xxxxxxx”。这样,我们就成功地实现了读写文本文件填写行号的需求。 ### 回答3: 1开始,行号与文本内容之间用制表符\t隔开。 实现这个程序的关键是对文件进行读写操作。Python提供了open()函数来打开一个文本文件。这个函数的返回值是一个文件对象,可以用来读写文件内容。 在本题,我们需要打开demo.py文件读取一行的内容,然后加上行号,再将修改后的内容写入demo_new.py文件。因此,我们可以使用如下代码: ``` # 打开demo.py文件 with open("demo.py", "r") as f: # 打开demo_new.py文件 with open("demo_new.py", "w") as fw: # 逐行读取demo.py文件 for i, line in enumerate(f): # 在每行末尾加上行号和制表符 new_line = line.rstrip() + "\t" + str(i+1) + "\n" # 写入demo_new.py文件 fw.write(new_line) ``` 上面的代码,我们使用了Python的with语句来打开文件,这样就不需要手动关闭文件了。在with语句,我们分别打开了demo.py和demo_new.py两个文件。其,第一个参数是文件名,第二个参数是文件的模式,"r"表示读取模式,"w"表示写入模式。 然后,我们使用for循环逐行读取demo.py文件。enumerate()函数可以同时返回行号和行内容。在循环体内,我们将行号和制表符拼接到行末尾,然后写入demo_new.py文件最后,记得关闭文件对象。 经过上述操作,我们就可以生成一个新的demo_new.py文件,其一行都带有行号。这个程序还可以按照不同的要求进行扩展,比如可以让用户自定义行号的起始值,或者让用户输入要修改的文件名等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值