如何打开文件,替换一些字符串以及将更新保存到同一文件?

时间:2018-11-01 17:41:11

标签: python python-3.x

我试图遍历目录中的所有CSV文件,进行查找/替换,然后将结果保存到相同的文件(名称相同)中。看起来这应该很容易,但是我似乎在这里缺少了一些东西。这是我正在使用的代码。

import glob
path = 'C:\\Users\\ryans\\OneDrive\\Desktop\\downloads\\Products\\*.csv'
for fname in glob.glob(path):
    print(str(fname))
    with open(str(fname), "w") as f:
        newText = f.read().replace('|', ',').replace(' ', '')
        f.write(newText)

我浏览了下面的链接,并尝试了其中列出的概念,但到目前为止没有任何效果。

How to open a file for both reading and writing?

2 个答案:

答案 0 :(得分:2)

您需要使用'r+'而不是'w'打开文件。见下文:

import glob
path = 'C:\\Users\\ryans\\OneDrive\\Desktop\\downloads\\Products\\*.csv'
for fname in glob.glob(path):
    print(str(fname))
    with open(str(fname), "r+") as f:
        newText = f.read().replace('|', ',').replace(' ', '')
        f.write(newText)

答案 1 :(得分:1)

这是最终的(有效的)解决方案。

import glob
import fileinput
path = 'C:\\Users\\ryans\\OneDrive\\Desktop\\downloads\\Products\\*.csv'
for fname in glob.glob(path):
    #print(str(fname))
    with open(fname, 'r+') as f:
        text = f.read().replace(' ', '')
        f.seek(0)
        f.write(text)
        f.truncate()

再次感谢小费!