繁体   English   中英

使用python将字符追加到txt文件中的每一行

[英]Appending characters to each line in a txt file with python

我编写了以下python代码段,将小写p字符附加到txt文件的每一行:

f = open('helloworld.txt','r')
for line in f:
    line+='p'
print(f.read())
f.close()

但是,当我执行此python程序时,它只返回一个空空白:

zhiwei@zhiwei-Lenovo-Rescuer-15ISK:~/Documents/1001/ass5$ python3 helloworld.py

谁能告诉我我的密码有什么问题吗?

当前,您只读取每一行,而不写入文件。 在写入模式下重新打开文件并向其中写入完整的字符串,如下所示:

newf=""
with open('helloworld.txt','r') as f:
    for line in f:
        newf+=line.strip()+"p\n"
    f.close()
with open('helloworld.txt','w') as f:
    f.write(newf)
    f.close()

open(filePath, openMode)有两个参数,第一个是文件的路径,第二个是将其打开的模式。 当使用'r'作为第二个参数时,实际上是在告诉Python将其作为唯一读取文件打开。

如果要在其上进行写操作,则需要以写模式打开它,并使用'w'作为第二个参数。 您可以在其官方文档中找到有关如何在Python中读取/写入文件的更多信息。

如果要同时读取和写入,则必须以读取和写入两种方式打开文件。 您只需使用'r+'模式即可完成此操作。

好了,在shell中键入help(f),您可以获得“ BufferedIOBase对象缓冲区上基于字符和行的图层”。 意思是:如果您读第一个缓冲区,您可以得到内容,但是再次获得。 它是空的。所以像这样:

with open(oldfile, 'r') as f1, open(newfile, 'w') as f2:
       newline = ''
       for line in f1:
         newline+=line.strip()+"p\n"
         f2.write(newline)   

似乎您的for循环已经读取f.read()文件,因此f.read()返回空字符串。

如果只需要打印文件中的行,则可以像print(line)一样将打印内容移动到for循环中。 并且最好将f.read()移至for循环之前:

f = open("filename", "r")
lines = f.readlines()
for line in lines:
    line += "p"
    print(line)
f.close()

如果需要修改文件,则需要创建另一个文件obj并以“ w”模式打开它,然后使用f.write(line)将修改后的行写入新文件。

此外,最好在python中使用with子句,而不要使用open(),它更像pythonic。

with open("filename", "r") as f:
    lines = f.readlines()
    for line in lines:
        line += "p"
        print(line)

使用with子句时,您无需关闭文件,这更简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM