在迭代行时是否可以读写同一个文件?

2024-06-25 06:01:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

考虑^ {CD1>}

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

Tags: 文件代码txtmodewithlineopen选项卡
3条回答

要处理单词之间的额外空格,请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)

由于您试图将列表和字符串添加到一起,因此会出现错误。 .split()将创建一个列表,向该列表添加一个'\n'就是它出错的原因

您收到错误,因为split返回一个列表,并且您正在尝试使用列表添加str,您可以通过以下方式完成任务:

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

相关问题 更多 >