用目录中所有文件中的空格替换换行符-Python

时间:2018-07-04 22:45:06

标签: python text file-io

我的目录中大约有4000个txt文件。我想使用for循环在每个文件中用空格替换换行符。实际上,该脚本可用于该目的,但是当我保存文件时,它不会被保存,或者会再次用换行符保存。这是我的脚本;

import glob
path = "path_to_files/*.txt"
for file in glob.glob(path):
    with open(file, "r+") as f:
        data = f.read().replace('\n', ' ')
        f.write(data)

正如我所说,我可以用空格替换换行符,但是最后并没有保存。我也没有任何错误。

2 个答案:

答案 0 :(得分:2)

进一步阐述我的评论(“ 在“ r +”模式下打开文件几乎总是一个坏主意(由于当前位置的处理方式)。打开文件进行读取,然后读取数据,替换换行符,打开要写入的相同文件文件,写入数据“):

for file in glob.glob(path):
    with open(file) as f:
        data = f.read().replace('\n', ' ')
    with open(file, "w") as f:
        f.write(data)

答案 1 :(得分:1)

您需要使用seek将文件位置重置为0,然后在完成替换字符串的写入后使用truncate截断剩余的内容。

import glob
path = "path_to_files/*.txt"
for file in glob.glob(path):
    with open(file, "r+") as f:
        data = f.read().replace('\n', ' ')
        f.seek(0)
        f.write(data)
        f.truncate()