有可能在迭代行时读取和写入相同的文件吗?



我试图强制一个文件在python中被制表,我想同时读取和写入文件,也许这是不可能的,因为指针在试图写入时已经移动了。

考虑file.txt

chr1 557044 557064 FUS 1000 +
chr1 870106 870128 FUS 1000 +
chr1 936672 936706 FUS 1000 +
chr1 1433046 1433067 FUS 1000 +

我正在运行以下代码以使该文件以制表符分隔:

with open(file="file.txt",mode='r+') as file:
for line in file:
file.write('t'.join(line.strip().split() + 'n'))

但是我得到以下错误:

TypeError: can only concatenate list (not "str") to list

您正在获得错误,因为您试图将列表和字符串一起添加。.split()将创建一个列表,列表添加一个'n'就是它错误的原因

为了处理单词之间的额外空格,strip()每个单词在您join()之前的行中使用制表符。顺便说一句,收集您想要写入变量的所有文本(下面代码中的contents),并将其写入所需的格式之后。

试试这个:

contents = ""
with open("file.txt", "r+") as f:
for line in f:
contents += "t".join(word.strip() for word in line.split()) + "n"
with open("file.txt", "w") as f:
f.write(contents)

你得到错误,因为分割返回一个列表,你正试图添加STR与列表,你可以得到你的任务完成:

with open(file="file.txt",mode='r+') as file:
file.write(file.read().replace(" ", "t"))

最新更新